我在 Postgres 数据库上有一个 Rails 应用程序,它在很大程度上依赖于这样的查询:
SELECT DISTINCT client_id FROM orders WHERE orders.total>100
本质上,我需要订单满足特定条件的所有客户的 ID。我只需要 ID,所以我认为这比使用联接要快得多。
向“总计”列添加索引对我有好处吗?我不介意插入速度,我只需要查询运行得非常快。
最佳答案
我希望得到以下 multicolumn index最快:
CREATE INDEX orders_foo_idx ON orders (total DESC, client_id);
PostgreSQL 9.2 可以受益更多。凭借其“仅索引元组”功能,它可以在有利的情况下提供查询而无需访问表:自上次 VACUUM
以来没有写入。
DESC
或 ASC
在这种情况下几乎无关紧要。 B 树索引可以在两个方向上几乎同样有效地进行搜索。
关于sql - 使用索引提高 PostgreSQL 查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13790926/