我有一个Postgres数据库,其中有两列不是主键(也不是),但是经过大量搜索并在其他表中进行了相等的比较。
我相信这是为我的表添加索引的完美案例。我之前从未在数据库上使用过索引,因此我正在尝试学习正确的方法。
我了解到我可以选择多种类型的索引。如何确定哪种方法对我的数据库最有效?正确的方法是创建一个涵盖两列的单个索引吗?
答案 0 :(得分:21)
Postgres支持B-tree,R-tree,Hash,GiST和GIN索引类型。 B树索引是最常见的,也是最常见的场景。这是语法:
CREATE INDEX idex_name ON table_name USING btree(column1, column2);
以下是createindex文档,以下是postgres中不同indextypes的更多信息。
您应该使用哪种类型的索引取决于您要执行的操作类型。如果您只是想要进行等式检查,那么哈希索引是最好的。对于大多数常见操作(例如,比较,模式匹配),应使用B树。我个人从未使用过GiST或GIN索引。那边有什么古鲁?
文档描述了所有这些类型。他们可以比我更好地帮助你:)
希望这有帮助。
答案 1 :(得分:3)
尝试理解queryplanner,因为PostgreSQL的这部分必须使用你的索引。 EXPLAIN ANALYZE对于优化查询至关重要。