在postgres中使用LIMIT x来破坏“不同”的选择

时间:2016-07-04 17:21:01

标签: performance postgresql database-optimization

以下查询非常慢:

select distinct gene_symbol from my_table where gene_symbol like 'ED%' limit 15

这并不奇怪,因为distinct会导致它进行哈希聚合。

这个版本运行得更快:

      with q0 as (
        SELECT gene_symbol from my_table WHERE gene_symbol like 'ED%' limit 200
      )
      select distinct gene_symbol from q0 limit 15

但不方便的是我需要调整内部查询的LIMIT, 如果我将它设置得太高,它会变慢,如果我将它设置得太低,我可能会少于15行。

有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

查询看起来很简单,但我让一些替代方案

-g

答案 1 :(得分:0)

select distinct gene_symbol 
from my_table 
where gene_symbol like 'ED%' 
limit 15