2010-01-21 1 views
0
CREATE TABLE `names` (`name` varchar(20)); 

names 테이블에는 캘리포니아에 거주하는 모든 사람의 이름 (예 : 4 천만)이 모두 들어 있다고 가정합니다.대용량 데이터 집합 (40M 행)의 고유 값 계산 : 카운트, 이름으로 SELECT 카운트 (*) 이름 FROM names GROUP BY 이름 ORDER BY 이름;

SELECT count(*) as count, name FROM names GROUP BY name ORDER BY name; 

어떻게하면이 쿼리를 최적화 할 수 있습니까?

예상 결과 :

count | name 
9999 | joe 
9995 | mike 
9990 | kate 
.... | .... 
    2 | kal-el 

답변

0

글쎄, 당신은 아직 최적화되지 무슨 생각하게? 이것은 좋은 데이터베이스 엔진이 비교적 쉽게 처리 할 수 ​​있어야하는 일종의 쿼리와 같습니다. 특히 테이블에 적절한 인덱스가있는 경우에는 더욱 그렇습니다.

실제로 여기에 병목 현상이 있습니까? 아니면 일 수도 있고 나중에 일 수 있다는 것에 대해 걱정하고 있습니까? 후자라면 RDBMS에서 (더미 데이터를 생성하여) 시도해보고 어떤 일이 발생하는지 살펴 보시기 바랍니다.

1

테이블의 이름 열에 인덱스를 만들어야합니다. 질의는 가능한 한 훌륭합니다.