Postgresql:列上可以有多个索引,根据目的可以使用不同的索引

时间:2011-07-08 05:07:37

标签: sql postgresql indexing

我正在考虑开始使用PostgreSQL数据库。

我经常要用相同的数据做不同的事情。例如,有时我必须使用LIKE搜索类似的字符串,有时我必须检查值是否存在。

在后一种情况下,哈希指数最好。在前一种情况下,我不确定哪种是最好的,但我很确定它不是哈希。

是否可以在同一数据上创建两种不同类型的索引,然后告诉DB将哪些用作SQL语句的一部分。

我会对postgresql特有的或者与关系型DMS的功能有关的任何信息感兴趣。

编辑:我的标题不正确:我将hashes改为indexes

2 个答案:

答案 0 :(得分:3)

可以有多个索引,Postgres会自动使用它认为最适合您查询的索引。

答案 1 :(得分:0)

Postgres将使用它可以使用的最佳索引,并且检查使用哪个索引的开销很小 - 它甚至不应该是可测量的。您可以使用prepared statements完全消除它。更重要的是在插入和更新数据时管理附加索引所需的时间。

因此,如果您的表经常更改,则应将索引数限制为最小值。

如果您的表更改很少或可能很慢,那么您可以根据需要创建任意数量的索引。例如,尚未发布的PostgreSQL 9.1(但现在有第二个测试版适用于开发),您可以speed up LIKE searches significantly at the cost of slow updates/inserts