索引
B-tree索引
B-tree适合处理那些能够按顺序存储的数据,比如对于一些字段涉及到使用“<”、“<=”、“=”、“>=”或“>”操作符进行比较的时候,可以建立一个索引。
Hash索引
Hsh索引只能处理简单的等于比较。当一个索引了的列涉及到使用“=”操作符进行比较时,查询规划器会考虑使用Hash索引。
下面的命令用于创建Hash索引:
CREATE INDEX name ON table USING hash (column);
AI写代码
sql
1
PostgreSQL的Hash索引的性能比B-tree索引弱,而且Hash索引操作目前没有记录WAL日志,因此如果发生了数据库崩溃,可能需要使用REINDEX重建Hash索引.为此,不建议用户使用Hash索引.
- GIN: 想象成字典后面的索引,列出每个词出现在哪些页码(posting list),适合查“某个东西在哪里出现过”。适用于多值类型,查询快但更新慢。
- GiST: 想象成一棵平衡树(类似 B-tree 的扩展),可以根据不同的规则(谓词)进行搜索,灵活性高。适用于需要多种查询方式或频繁更新的场景。
选择建议:
- 如果你在对
jsonb、array或进行全文检索 (tsvector