2013-09-06 1 views
3

내 웹 사이트에 PHP & MySQL을 사용 중이며 일부 메트릭을 집계하여 클라이언트에 대한 보고서를 생성해야합니다. 메트릭은 MyISAM 엔진을 사용하고 12 개의 PARTITIONS에 분산되어있는 4 백만 행 테이블에서 찾을 수 있습니다. PHP는 루프에서 동일한 한계의 MySQL SELECT 쿼리가 느려지고 느려짐

의 (a에 대한 루프), 반복 할 때마다, 나는 UNION과 같은 임시 테이블과 조인
id = X OR id =Y OR id = Z 

(나는 어떤 내부를 사용하지 않는으로 특정 ID와 일치 1,000 행을 검색 1 id UNION 2 등등. id의 해시에 의존하는 파티션 옵션 때문일 수 있습니다.

문제는 쿼리가 느리고 느리게 진행되는 것입니다. 점진적으로 캐시되는 것으로 인해 발생할 수 있지만 무엇이 있는지 모르겠습니다.

어떤 도움이라도 매우 소중하게 생각합니다. 많은 감사드립니다.

+0

은 시간이 지남에 따라 성장하여 큰 테이블의 행 수 있습니까? 이 id 열에 여러 번 검색하는 색인이 있습니까? ('OR' 절은 다중 검색을 유발할 수 있습니다.)'id'는 기본 키입니까? –

+0

행렬 집계 ... 추가 테이블과 관련된 조인이있는 경우 표시되지 않는 항목이 더 있습니다. 문제/지연을 유발하는 쿼리를 게시 할 수 있습니까? – DRapp

+0

ID는 기본 키이며 조인이 없습니다. 보다 간단한 솔루션과 장기적인 목적을 위해 지금 Hadoop을 사용하고 있습니다! 문제 해결됨! 도와 주신 모든 분들께 감사드립니다! – hmicn

답변

4

인덱스가 깊은 곳에서 시작하는 LIMIT를 사용하면 MySQL이 매우 느려집니다. 후반 행 조회를 최적화하기 위해이 문서를 체크 아웃 :

http://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/

+0

어쨌든 링크가 죽었을 경우 해당 링크에서 관련 발췌문을 사용하여 답변을 업데이트 할 수 있습니까? – Kermit

+0

그냥 확인해 보았습니다. 문제가 있다고 생각합니다. 고마워요! 나는 다른 해결책을 개발했고, 해결 된 수수께끼! – hmicn

관련 문제