2011-08-05 2 views
0

내 쿼리가 매우 느린 결과를 생성하고 있습니다. 이것은 분명히 받아 들일 수없는 것이고 나는 여기서 잘못된 것을해야 할 것입니다.MySQL 쿼리가 처리 시간이 매우 느립니다. 어떻게 속도를 높이나요?

쿼리에 4 개의 테이블이 있습니다. tr_id는 여러 다른 국가로 이동하려는 여러 사용자의 응용 프로그램을 포함 할 수있는 단일 트랜잭션을 나타냅니다.

1298 2011-08-04 2011-09-01 Joe Bloggs Platinum_Level China 
1298 2011-08-04 2011-09-01 Jane Bloggs Platinum_Level China 
1298 2011-08-04 2011-09-14 Joe Bloggs Platinum_Level Japan 
1298 2011-08-04 2011-09-14 Jane Bloggs Platinum_Level Japan 
내가 사용

내 쿼리는 다음과 같습니다 : 내가 좋아하는 별도의 행에 각 사람에 대한 정보와 각 국가를 표시하려면 많은 양의 데이터가 데이터베이스에 있습니다

SELECT tr_id, tr_datecreated, tr_depart, trp_name, trp_lname, trv_processlevel, 
visa_destcountry FROM transactions, people, trvisas, visas 
WHERE tr_datecreated >= "2009-09-02 00:00:00" AND tr_datecreated <= "2009-09-04 23:59:59" 
AND tr_id = trp_trid 
AND tr_id = trv_trid 
AND trv_visaid = visa_code 

, 결과를 좁히기 위해 필터를 추가하기 만하면 쿼리의 복잡성이 증가하기를 원할 것입니다. 이것은 더 많은 테이블에 액세스하고 더 많은 비교 등을 의미합니다. 나는 이것이 너무 복잡하지 않으며 합리적인 시간 내에 완료 될 수 있다고 확신합니다.

모든 조언에 감사드립니다.

편집 : 사실

은 실제 MySQL의 쿼리 53 초 걸립니다, 내 코드를 벤치마킹 한. 최적화에 MySQL의 조언 밖으로

+3

당신은 무엇 인덱스를해야합니까? 쿼리와 일치하는 인덱스가 있습니까? Explain 명령을 사용해 보셨습니까? – BugFinder

+1

검색 할 열의 인덱스가 있으면 성능이 정상적으로 유지되어야합니다. –

+0

죄송합니다, "쿼리와 일치하는 인덱스가 있습니다"라는 것이 무슨 뜻인지 모르겠습니다. Explain 명령을 살펴 보겠습니다. – Joe

답변

관련 문제