我试图通过在rating列上创建索引来降低查询执行的成本。该表有2680个元组
SELECT * from cup_matches WHERE rating*3 > 20
但是,当我使用pgAdmin查看索引编制之前和之后的查询成本时,它仍保持不变。我认为它会减少,因为索引过程应该减少从硬盘获取的数据的成本,因为索引(降低I / O成本)到内存。有人能告诉我它为什么保持不变?
答案 0 :(得分:2)
成本没有减少,因为你在哪里进行变异操作所以它不能使用索引。删除" * 3"操作应该做到这一点。
SELECT * from cup_matches WHERE rating > 20
应该有性能提升,因为您不再改变评级值。当值发生变异时,您需要进行完整的表扫描才能进行比较。
答案 1 :(得分:0)
因为索引位于cache-control: private
而非rating
。要使用当前索引,请尝试
rating*3