2016-07-04 48 views
-1

與極限X1選擇下面的查詢是很慢:spoeding了「明顯的」 Postgres裏

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

這並不奇怪,因爲不同的原因,它做的哈希聚集。

該版本運行速度快了很多:

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

但不方便的是,我需要調整內部查詢的極限, 如果設置得太高,就變得很慢,如果我將它設置太低,我可能會少於15行。

有沒有更好的方法?

+1

除非您發佈包括索引和解釋分析的輸出你的表結構,這是盲目的領先盲目 – e4c5

回答

0

查詢似乎很簡單,但我讓一些替代品

SELECT gene_symbol FROM my_table GROUP 1 LIMIT 15; 

SELECT p.gene_symbol 
FROM 
(SELECT 
gene_symbol 
FROM my_table GROUP 1) AS p 
ORDER BY 1 DESC|ASC 
LIMIT 15; 
+0

我有錯誤的情況下,在帖子中省略了類似過濾器的地方,問題沒有被糾正。你的第二個解決方案與my_table中選擇不同的gene_symbol一樣慢,其中gene_symbol像'ED%'限制15; –

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

appologies,這實際上是緩慢的查詢,我錯誤地遺漏了過濾器在後的地方... –

+0

@MaxL。如果是這種情況,你的_faster_查詢沒有任何區別。爲兩者發佈解釋分析。 –