2010-12-01 65 views
21

我有一个Postgres数据库有2列不是主键(也可以),但是搜索了很多,并将它们与其他表中的2列进行比较。如何确定在Postgres中使用哪种类型的索引?

我相信这是向我的表添加索引的理想情况。我从来没有在数据库上使用过索引,所以我正在尝试学习正确的方法。

我知道我可以从中选择多种类型的索引。我如何确定哪种方法对我的数据库最有效?也适当的方法是创建一个涵盖两个列的单个索引?

回答

18

Postgres支持B-树,R-tree,Hash,GiST和GIN索引类型。 B树索引是最常见的并且适用于最常见的场景。这是语法:

CREATE INDEX idex_name ON table_name USING btree(column1, column2); 

这里是createindex文档,这里是在Postgres的不同indextypes更多信息。

你应该使用什么类型的索引取决于你想要执行什么类型的操作。如果你只是想要平等检查,那么散列索引是最好的。对于大多数常见操作(例如比较,模式匹配)应该使用B树。我个人从未使用过GiST或GIN索引。那里有哪位Guru?

该文档描述了所有这些类型。他们可以帮助你比我更好:)

希望这会有所帮助。

+0

谢谢,我只是稍微更新了我的问题。我实际上纯粹是为了平等,所以我猜测散列索引将是最好的。 – Kellenjb 2010-12-01 17:08:37

3

试着去理解queryplanner,因为PostgreSQL的这部分必须和你的索引一起工作。 EXPLAIN ANALYSE对于优化您的查询至关重要。

相关问题