该查询基本上是:
SELECT DISTINCT "my_table"."foo" from "my_table" WHERE...
假设我100%确信DISTINCT查询的那部分是运行缓慢的原因,所以我省略了查询的其余部分以避免混淆,因为我主要关注的是不同部分的缓慢性(总是缓慢的来源)。
DISTINCT
该表具有250万行数据。该DISTINCT 是 需要在这里没有列出的目的(因为我不想回修改后的查询,而是让不同的查询,而只是一般的信息运行在较快的 DBMS 的水平, 如果 可能的话)。
我如何才能DISTINCT在不更改SQL的情况下(特别是使用Postgres 9)更快地运行(即,我不能更改此SQL,但可以在数据库级别进行优化)?
您的DISTINCT使它对输出行进行排序,以查找重复项。如果将索引放在查询选择的列上,则数据库可能能够按索引顺序将它们读出并保存排序步骤。在很大程度上取决于查询的详细信息和所涉及的表- 您所说的“您知道DISTINCT存在问题”确实限制了可用答案的范围。