一尘不染

在Postgres中加快慢速SELECT DISTINCT查询的解决方案

sql

该查询基本上是:

SELECT DISTINCT "my_table"."foo" from "my_table" WHERE...

假设我100%确信DISTINCT查询的那部分是运行缓慢的原因,所以我省略了查询的其余部分以避免混淆,因为我主要关注的是不同部分的缓慢性(总是缓慢的来源)。

该表具有250万行数据。该DISTINCT 需要在这里没有列出的目的(因为我不想回修改后的查询,而是让不同的查询,而只是一般的信息运行在较快的
DBMS 的水平, 如果 可能的话)。

我如何才能DISTINCT在不更改SQL的情况下(特别是使用Postgres 9)更快地运行(即,我不能更改此SQL,但可以在数据库级别进行优化)?


阅读 202

收藏
2021-03-17

共1个答案

一尘不染

您的DISTINCT使它对输出行进行排序,以查找重复项。如果将索引放在查询选择的列上,则数据库可能能够按索引顺序将它们读出并保存排序步骤。在很大程度上取决于查询的详细信息和所涉及的表-
您所说的“您知道DISTINCT存在问题”确实限制了可用答案的范围。

2021-03-17