2012-06-14 3 views
0

주식 시세 (stock_symbol, quote_date, open_price, high_price, low_price, close_price)가 포함 된 MySql 테이블이 있으며 다양한 최대 값과 최소값을 알아야합니다. 10/20/245/252 일 동안 최대 높음/최소값.MySql : 가변 행 최대 최소 쿼리?

나는 각 기간에 대한 SELECT 쿼리를 사용하여이 작업을 수행하는 방법을 알고

SELECT max(high_price), min(low_price) FROM mytable WHERE stock_symbol = 'GOOG' ORDER BY quote_date DESC LIMIT 10; 

은이 데이터베이스 서버에 너무 강렬한 질의를하지 않고 하나의 SELECT 문을 사용하여 수행 할 수 있습니까? 단일 SELECT 문이 여러 SELECT 문보다 성능이 좋을까요?

모든 의견/도움을 많이 주시면 감사하겠습니다. 감사!

답변

0

한 문장으로 처리하는 것이 좋지만 인덱스에만 문제가 있습니다. 최소 및 최대 값을 묻는 모든 열에 인덱스가 있거나 where 절에 추가하는 인덱스가 있어야합니다. hight_price, low_price 및 stock_symbol. 인덱스

이 요청에도 매우 큰 테이블과없는 순간이 될 것이다 LIMIT 10

이 쿼리에 ORDER BY을 넣지 마십시오 : 그것은 최소로 쓸모 및 최대 주문 독립적으로 동일 당신은 세트를 본다. http://dev.mysql.com/doc/refman/5.0/en/create-index.html

+0

감사 :

귀하의 쿼리는 단순히

SELECT max(high_price), min(low_price) FROM mytable WHERE stock_symbol = 'GOOG' 

어떻게 인덱스를 만들 수 있어야합니다. 따라서 동적으로 생성 된 행 번호를 사용하는 단일 명령문을 사용하거나 다른 방법이 있습니까? – Zishan

+0

왜 행 번호를 원하십니까? 추가 할 다른 필터 (예 : 지난 30 일)를 WHERE 절의 조건으로 추가하십시오. –