pg 索引
索引类型
- b-tree 索引 默认 > >= between is null 等用这个
- 哈希索引 处理=值比较
- gin 适合 array,hstore,json,range
- brin 线性排序的列 销售订单表的日期等
- gist
- sp-gist
创建索引
ON table_name [ USING method ]
(
column_name [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
[, ...]
);
说明:
name 索引的名称。它是可选的。如果您不指定索引名称,PostgreSQL 将会自动生成一个。
table_name 是要为其创建索引的表名。
method 是索引方法的名称。包括 btree, hash, gist, spgist, gin, 和 brin。 btree 是默认的方法。您可以查看索引类型以了解更多。
column_name 是要创建索引的列名。
[ ASC | DESC ] 指定排序是顺序还是逆序。 它是可选的, ASC 是默认值。
NULLS FIRST 或 NULLS LAST 指定排序时空值在非空值之前或之后。当指定 DESC 时, NULLS FIRST 是默认的,否则 NULLS LAST 是默认的。
UNIQUE 指示创建一个唯一索引。
IF NOT EXISTS 指示只有指定的索引名称不存在时才创建索引。
PostgreSQL 会对主键列自动创建索引。
要检查查询是否使用索引,请使用该 EXPLAIN 语句。
如果您在一个索引中使用了多个列,那么此索引被称为多列索引或复合索引。
删除索引
[ IF EXISTS ] name
[ CASCADE | RESTRICT ];
说明:
name 是要删除的索引的名称。
IF EXISTS 指示如果指定的索引不存在将不会给出错误, PostgreSQL 将会发出一个通知。
CASCADE 指示 PostgreSQL 自动删除那些依赖于此索引的对象。
RESTRICT 指示如果有其他对象依赖于此索引,则拒绝删除。 这是默认的行为。
删除索引时, PostgreSQL 默认会获取该表的排他锁并阻止任何其他的访问,知道索引删除完成。您可以使用 CONCURRENTLY 选项改变这一行为。
注意,当使用 CASCADE 选项时, 不支持 CONCURRENTLY。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)