我正在考虑开始使用PostgreSQL数据库。
我经常要用相同的数据做不同的事情。例如,有时我必须使用LIKE搜索类似的字符串,有时我必须检查值是否存在。
在后一种情况下,哈希指数最好。在前一种情况下,我不确定哪种是最好的,但我很确定它不是哈希。
是否可以在同一数据上创建两种不同类型的索引,然后告诉DB将哪些用作SQL语句的一部分。
我会对postgresql特有的或者与关系型DMS的功能有关的任何信息感兴趣。
编辑:我的标题不正确:我将hashes
改为indexes
答案 0 :(得分:3)
可以有多个索引,Postgres会自动使用它认为最适合您查询的索引。
答案 1 :(得分:0)
Postgres将使用它可以使用的最佳索引,并且检查使用哪个索引的开销很小 - 它甚至不应该是可测量的。您可以使用prepared statements完全消除它。更重要的是在插入和更新数据时管理附加索引所需的时间。
因此,如果您的表经常更改,则应将索引数限制为最小值。
如果您的表更改很少或可能很慢,那么您可以根据需要创建任意数量的索引。例如,尚未发布的PostgreSQL 9.1(但现在有第二个测试版适用于开发),您可以speed up LIKE searches significantly at the cost of slow updates/inserts。