美文网首页
PostgreSQL基础知识--索引

PostgreSQL基础知识--索引

作者: Amy1234567 | 来源:发表于2021-04-29 15:14 被阅读0次

    索引是增强数据库性能的常用方法。索引使得数据库在查找和检索数据库的特定行的时候比没有索引快得多。但索引页增加了整个数据库徐彤的开销,所以应该合理使用。

    一,索引类型

    PostgreSQL提供了多种索引类型:B-Tree, Hash, GiST和GIN, 由于它们使用了不同的算法,因此每种索引类型都有其合适的查询类型,缺省时,CREATE INDEX命令将创建B-Tree索引。

    1. B-Tree

    my test my test

    B-Tree索引主要用于“等于”和“范围”查询,特别是当索引包含操作符"<, <=, =, >=, >"作为查询条件时,PostgreSQL的查询规划器都会考虑使用B-Tree索引。在使用BETWEEN, IN, IS NULL, IS NOT NULL的查询中,postgreSQL也可以使用B-Tree索引。然而对于基于模式匹配操作符的查询,如LIKE, ILIKE, ~ 和 ~*, 仅当模式存在一个常量,且该常量位于模式字符串的开头时,如col like 'foo%' 或 col ~ '^foo',索引才会生效,否则将会进行全表扫描, 如 col LIKE '%bar'。

    测试表

    my test my test my test

    2. Hash

    散列(Hash)索引只能处理简单的“等于”比较。当索引列使用“等于”操作符进行比较时,查询规划器会考虑使用散列索引。

    这里需要额外说明的是,PostgreSQL散列索引的性能不比B-Tree索引强,但是散列索引的尺寸和构造时间则更差。另外,由于散列索引操作目前没有记录WAL日志,因此一旦发生了数据库崩溃,我们将不得不用REINDEX重建散列索引。

    my test my test

    3. GiST

    Gist索引不是一种单独的索引类型,而是一种架构,可以在该架构上实现很多不同的索引策略。从而可以使GiST索引根据不同的索引策略,而使用特定的操作符类型。 作为示例,PostgreSQL的标准发布中包含用于二维几何数据类型的 GiST 操作符类,它支持:

    手册

    4. GIN

    GIN索引是反转索引,它可以出来包含多个键的值(包括数组)。与GiST类似,GIN同样支持用户定义的索引策略。从而可以使GIN索引根据不同的索引策略,而使用特定的操作符类型。作为示例,PostgreSQL的标准发布中包含了用于一维数组的GIN操作符类型,如:<@、@>、=、&&等。

    手册

    二,复合索引

     PostgreSQL中的索引可以定义在数据表的多个字段上

    my test my test my test my test my test

    太难了,理解不了,除了会创建会删除,真的有点理解不了~

    相关文章

      网友评论

          本文标题:PostgreSQL基础知识--索引

          本文链接:https://www.haomeiwen.com/subject/qqlfrltx.html