温馨提示:本文翻译自stackoverflow.com,查看原文请点击:sql - Indexing for dense_rank query in postgresql
postgresql sql

sql - 在PostgreSQL中为deny_rank查询建立索引

发布于 2020-03-29 22:05:27

因此,一直想在一个大表上运行查询,但是要花一天多的时间才能完成,当我在开始时进行解释并查看结果时,它似乎没有使用索引

该查询位于此问题上 更新表以从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列索引会使该查询使用索引吗?或任何其他方式来对此进行优化?

查看更多

提问者
Luffydude
被浏览
53
Gordon Linoff 2020-01-31 19:01

首先,您需要在上建立索引id那可能在那里,因为它应该是主键。

然后,Postgres的可能会使用一个索引(condition1, condition2, left(condition3, 5))dense_rank()您可能需要测试以确保。