索引类型:select amname from pg_am;
- btree
- hash
- gist
- gin
- spgist
- brin
Btree索引:默认支持的索引操作符策略
<
<=
=
>=
>
Hash索引:默认支持的索引操作符策略
=
Gin索引:支持多值列的索引。如数组类型,全文检索类型
一维数组类型对应的GIN索引已实现的访问策略操作符
<@
@>
=
&&
Gist,并不是单类的索引,可以认为它是一种索引框架支持许多不同的索引策略(operator class)
二维几何类型的以下操作符支持通过Gist索引访问
<<
&<
&>
>>
<<
&<|
|&>
|>>
@>
<@
~=
&&
Sp-Gist, 与gist类似也是一种索引框架,支持基于磁盘存储的非平衡数据结构,如四叉树,k-d树,radix树
<<
>>
~=
<@
<^
<^ /* 在下面 circle'((0,0), 1)' < ^circle'((0,5), 1)' */
>^ /* 在下面 circle'((0,5), 1)' < ^circle'((0,0), 1)' */
使用索引的好处
- 利用索引进行排序减少CPU开销
- 加速带条件的查询,删除,更新
- 加速JOIN操作
- 加速外键约束更新和删除操作
- 加速唯一值约束,排他约束
注意事项
- 正常创建索引时,会阻断除查询以外的其他操作.
- 使用并行CONCURRENTLY 选项后,可以允许同时对表的DML操作,但是对于频繁DML的表,这种创建索引的时间非常长.
- 某些索引不记录WAL,所以如果有利于WAL进行数据恢复的情况(如crash recovery,流复制,warm standby等),这类索引在使用前需要重建.(HASH 索引)
set enable_seqscan=off;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理