索引
SELECT content FROM test1 WHERE id = constant;
在不建立索引的前提下,会扫描id列的所有行。建立索引后,则会将id列转换一个树的结构或者hash表,这样我们只要遍历查找一棵树的几层或者算出hash值即可。
索引类型
PostgreSQL提供了多种索引类型: B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN。
涉及比较操作符的psql查询规划器会考虑使用B-tree。
涉及等值比较操作符的,会考虑用Hash索引,因为Hash只能处理简单的等值比较。
GIN 索引是“倒排索引”,它适合于包含多个组成值的数据值,例如数组。倒排索引中为每一个组成值都包含一个单独的项,它可以高效地处理测试指定组成值是否存在的查询。
CREATE TABLE test2 (
major int,
minor int,
name varchar
);
SELECT name FROM test2 WHERE major = constant AND minor = constant;
CREATE INDEX test2_mm_idx ON test2 (major, minor);
只有 B-tree、GiST、GIN 和 BRIN 索引类型支持多列索引,最多可以指定32个列
参考文献:
http://www.postgres.cn/docs/10/indexes.html
http://www.postgres.cn/docs/10/using-explain.html