pg的索引有如下幾類:B-tree, Hash, GiST, SP-GiST,GIN, BRIN.每個索引都使用不同的算法,每種算法都匹配不同的類型數(shù)據(jù)的查詢。CREATE INDEX 命令默認創(chuàng)建適合大多數(shù)數(shù)據(jù)類型的B-tree 索引。
B-tree 索引可以應用于相等和值范圍的查詢,例如:
<,<=,=,>=,>,
between
in
is null
is not null
也適用
like 'foo'
~ '^foo' --正則匹配
like 'foo%'
但不適用like ‘%foo’。
B-tree也支持排序。雖然他不總是比簡單的掃描和排序快,但會非常有用。
Hash索引只能處理簡單的相等比較, 但查詢計劃不管是否對已建立哈希索引的列使用等號,會將全部執(zhí)行哈希索引。
哈希索引常見的的命令如下:
CREATE INDEX name ON table USING HASH (column);
GiST索引適用于二維地理位置數(shù)據(jù)等。
SP-GiST 適用于二維點坐標數(shù)據(jù)的索引等。
GIN索引適用于數(shù)組等。
BRIN(Block Range INdexes)適用于塊中查找最大值最小值。