2011-08-05 6 views
1

ID (int), 숫자 (10 진수) 및 날짜 (int 전용 타임 스탬프) 열이있는 테이블이 있습니다. 수백만 행이 있습니다. ID와 날짜에 대한 색인이 있습니다.큰 MySQL 테이블에 대한 다중 쿼리

내 페이지의 많은 부분에서 특정 날짜 범위 (각 쿼리가 다른 범위)의 숫자 목록에 대해이 4 ~ 5 회를 쿼리하고 있습니다.

처럼 :

select number,date where date < 111111111 and date >111111100000

것은 내가 이러한 데이터 세트를 조회하고있어 여러 다른 차트에 배치합니다. "오늘 vs 어제", "이 달 vs 지난 달", "올해의 vs 지난 해".

SQL 문을 사용하여 가능한 가장 큰 결과 집합을 쿼리 한 다음 내 프로그래밍 언어를 사용하여 정렬 된 스플 라이스 된 배열을 통해 쿼리를 필터링하는 것이 이러한 0.3 초 ​​쿼리 각각을 기다리는 것보다 낫겠습니까?

속도를 높이기 위해 할 수있는 다른 방법이 있습니까?

+0

지금까지 답변 해 주셔서 감사합니다. 6 개의 그래프가있는 페이지가 있습니다. 나는 그래프를 필요한 줄로 채우기 위해 1-20 백만 행의 데이터 테이블을 여러 번 쿼리해야 할 것입니다. 나는 큰 테이블을 경험하지 못하여 무엇을해야할지 확신이 서지 않습니다. 5 초의 페이지로드 시간은 불가피한가요? – Chris

+0

정말 느린 점을 확인 했습니까? –

+0

예, 원래 질문의 날짜 쿼리입니다. 여러 그래프로이 페이지에서 데이터의 여러 다른 날짜 범위를 쿼리해야합니다. 나는 몇 년 동안의 가치있는 데이터, 한 달 가치의 데이터, 일일 가치의 데이터, 지난 주 데이터, 지난 달 데이터, 지난 연도 데이터, 지난 3 년간의 데이터 등을 쿼리해야합니다. 모두 다른 그래프들. – Chris

답변

3

결과 집합과 쿼리 실행 속도에 따라 다릅니다. 이 질문에 대한 궁극적 인 대답은 없습니다.

실제로 속도를 높여야하는 경우 결과를 벤치 마크하고 계산해야합니다.

그러나 빨리 당신이 수행하는 쿼리를 일으킬 수 있지만 그건 당신이 등 버그를 포함 할 수있는 코드에서 이미 구현 로직 등

2

를 구현하는 것 외에 premature optimization 피해야한다 것을 명심 전체 레코드 범위에서로드하여 프로그래밍 방식으로 집계하려고하면 메모리에 미치는 잠재적 영향에 대해 자문 해보십시오.

인덱스를 기반으로 한 MySQL의 최적화는 어쨌든 발생할 수있는 모든 것보다 성능이 좋을 것이므로 잘못된 생각처럼 들릴 것입니다.