如何确定Postgres中使用的索引类型?

时间:2010-12-01 16:36:39

标签: postgresql indexing

我有一个Postgres数据库,其中有两列不是主键(也不是),但是经过大量搜索并在其他表中进行了相等的比较。

我相信这是为我的表添加索引的完美案例。我之前从未在数据库上使用过索引,因此我正在尝试学习正确的方法。

我了解到我可以选择多种类型的索引。如何确定哪种方法对我的数据库最有效?正确的方法是创建一个涵盖两列的单个索引吗?

2 个答案:

答案 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对于优化查询至关重要。