postgresql中稠密秩查询的索引
所以我一直试图在一个大表上运行一个查询,但它需要一天多的时间才能完成,当我在开始时放入explain并查看结果时,它并没有显示为使用索引 问题就在这里postgresql中稠密秩查询的索引,sql,postgresql,Sql,Postgresql,所以我一直试图在一个大表上运行一个查询,但它需要一天多的时间才能完成,当我在开始时放入explain并查看结果时,它并没有显示为使用索引 问题就在这里 3列索引是否会使此查询使用索引?或者其他任何优化方法?首先,您需要在id上建立索引。这可能是因为它应该是主键 然后,Postgres可能会使用上的索引(条件1,条件2,左(条件3,5))作为稠密等级()。您可能需要测试以确定。首先,您需要id上的索引。这可能是因为它应该是主键 然后,Postgres可能会使用上的索引(条件1,条件2,左(条件3,
3列索引是否会使此查询使用索引?或者其他任何优化方法?首先,您需要在
id
上建立索引。这可能是因为它应该是主键
然后,Postgres可能会使用
上的索引(条件1,条件2,左(条件3,5))
作为稠密等级()。您可能需要测试以确定。首先,您需要id
上的索引。这可能是因为它应该是主键
然后,Postgres可能会使用上的索引(条件1,条件2,左(条件3,5))
作为稠密等级()。您可能需要进行测试以确保。事实上,稠密等级
的ORDER BY
子句中存在LEFT
函数应该排除在那里使用任何索引的机会。我建议采用以下指标:
CREATE INDEX idx ON table1 (condition1, condition2, condition3);
使用LEFT(条件3,5)
没有真正的好处,因此我建议将densite\u RANK
称为:
DENSE_RANK() OVER (ORDER BY condition1, condition2, condition3)
上面的版本应该是可搜索的,建议的索引应该是可用的。事实上,稠密等级
的ORDER BY
子句中存在LEFT
函数应该排除在那里使用任何索引的机会。我建议采用以下指标:
CREATE INDEX idx ON table1 (condition1, condition2, condition3);
使用LEFT(条件3,5)
没有真正的好处,因此我建议将densite\u RANK
称为:
DENSE_RANK() OVER (ORDER BY condition1, condition2, condition3)
上面的版本应该是可搜索的,建议的索引应该是可用的