2016-07-04 5 views
-1

에 LIMIT의 X로 선택하는 다음 쿼리를 spoeding 매우 느린 : 그것은 해시 집계를 수행 할 뚜렷한 원인 때문에 놀라운 일이 아니다는 "별개"포스트 그레스

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

사실은 느린 쿼리입니다. 실수로 게시물의 필터와 같은 부분을 생략했습니다. –

+0

@MaxL. 그렇다면 _faster_ 쿼리가 아무런 차이가 없습니다. 둘 다에 대한'해석 분석 '게시. –