索引是增强数据库性能的利器,在检索某些特定行的时候效率会有很大提升,postgresql中索引类型丰富,每种索引有着不同的应用场景,下面简单介绍一下。
索引类型与场景
BTree
• =, >, >=, <, <=、排序
Hash
• =
GIN
• 多值类型(数组、全文检索、枚举、网络地址类型):包含、相交
• JSON类型
• 普通类型(通过btree_gin 插件支持):与B-Tree类似
• 字符串(通过pg_trgm 插件支持):模糊查询、相似查询
• 多列:任意列组合查询
GiST
• 空间类型:方位(上、下、左、右),空间关系(相交、包含),空间距离排序(KNN)
• 范围数据: =, &&, <@, @>, <<, >>, -|-, &<, and &>
• 普通类型(通过btree_gist 插件支持):与B-Tree类似,增加空间类型类似操作符
• 数组类型(通过intarray 插件支持):与GIN类似
• 多列:任意列组合查询
SPGiST
• 平面几何类型:与GiST类似
• 范围类型:与GiST类似
RUM
• 多值类型(数组、全文检索类型):包含、相交、相似排序