postgresql中稠密秩查询的索引

postgresql中稠密秩查询的索引,sql,postgresql,Sql,Postgresql,所以我一直试图在一个大表上运行一个查询,但它需要一天多的时间才能完成,当我在开始时放入explain并查看结果时,它并没有显示为使用索引 问题就在这里 3列索引是否会使此查询使用索引?或者其他任何优化方法?首先,您需要在id上建立索引。这可能是因为它应该是主键 然后,Postgres可能会使用上的索引(条件1,条件2,左(条件3,5))作为稠密等级()。您可能需要测试以确定。首先,您需要id上的索引。这可能是因为它应该是主键 然后,Postgres可能会使用上的索引(条件1,条件2,左(条件3,

所以我一直试图在一个大表上运行一个查询,但它需要一天多的时间才能完成,当我在开始时放入explain并查看结果时,它并没有显示为使用索引

问题就在这里


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)
上面的版本应该是可搜索的,建议的索引应该是可用的