一 :索引类型
Postgresql索引类型: B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN 。
1.B-tree
B-tree可以在可排序数据上的处理等值和范围查询。
例如:下列逻辑
< , <=, <=, >,=
将这些操作符组合起来,例如BETWEEN和IN,也可以用B-tree索引搜索实现。同样,在索引列上的IS NULL或IS NOT NULL条件也可以在B-tree索引中使用。
B-tree 类似Oracle常用索引
2.Hash
Hash索引只能处理简单等值比较。 = 。
CREATE INDEX name ON table USING HASH (column);
3.GiST
GiST索引并不是一种单独的索引,而是可以用于实现很多不同索引策略的基础设施。
它用来支持使用下列操作符的索引化查询:
<<,&<,&>,>>,<<|
&<|,|&>,|>>,@>,<@,~=,&&。
几何操作符:
最近邻搜索:GiST索引可以优化此类搜索
SELECT * FROM places ORDER BY location <-> point ‘(101,456)’ LIMIT 10;
4.SP-GiST
和GiST相似,SP-GiST索引为支持多种搜索提供了一种基础结构。SP-GiST 允许实现众多不同的非平衡的基于磁盘的数据结构,例如四叉树、k-d树和radix树。作为一个例 子,PostgreSQL的标准捐献包中包含了一个用于二维点的SP-GiST操作符类,它用于支持使用下列操作符的索引化查询:
<<, >>, ~=, <@, <^ ,>^ 。
含义见几何操作符。
5.GIN
GIN 索引是“倒排索引”,它适合于包含多个组成值的数据值,例如数组。倒排索引中为每一个组成值都包含一个单独的项,它可以高效地处理测试指定组成值是否存在的查询。GIN索引类似mysql 的多字段组合索引。
与 GiST 和 SP-GiST相似, GIN 可以支持多种不同的用户定义的索引策略,并且可以与一个 GIN 索引配合使用的特定操作符取决于索引策略。作为一个例子,PostgreSQL的标准贡献包中包含了一个用于数组的GIN操作符类,它用于支持使用下列操作符的索引化查询:
<@, @> ,= ,&&
6.BRIN
BRIN 索引(块范围索引的缩写)存储有关存放在一个表的连续物理块范围上的值摘要信息。类似es的分词摘要索引。
与 GiST、SP-GiST 和 GIN 相似,BRIN 可以支持很多种不同的索引策略,并且可以与一个 BRIN 索引配合使用的特定操作符取决于索引策略。对于具有线性排序顺序的数据类型,被索引的数据对应于每个块范围的列中值的最小值和最大值,使用这些操作符来支持用到索引的查询:
< , <= ,= >,= ,>