因此,一直想在一个大表上运行查询,但是要花一天多的时间才能完成,当我在开始时进行解释并查看结果时,它似乎没有使用索引
该查询位于此问题上 更新表以从PostgreSQL的子字符串中创建唯一的ID
update table1 t1
set target_id = tt1.seqnum
from (select t1.*,
dense_rank() over (order by condition1, condition2, left(condition3, 5)) as seqnum
from table1 t1
) tt1
where tt1.id = t1.id;
3列索引会使该查询使用索引吗?或任何其他方式来对此进行优化?
首先,您需要在上建立索引id
。那可能在那里,因为它应该是主键。
然后,Postgres的可能会使用一个索引(condition1, condition2, left(condition3, 5))
的dense_rank()
。您可能需要测试以确保。