2012-06-25 3 views
2

아래로 매우 느린 및 MySQL 서버에 가입 왼쪽 나는 다음과 같은 3 개 MySQL의 InnoDB 테이블 (테이블 _로 표시 : column_list에) :이MySQL은

meter_type: id, meter_type (primary key id) 
tag_type: id, meter_type_id (primary key id, foreign key meter_type_id(meter_type table)) 
tag: id, tag_type_id(primary key id, foreign key tag_type_id(tag_type table)) 

내가 태그가 : ID 내가왔다 meter_type을 찾을 싶습니다 레벨 1, 레벨 2, 레벨 3 내 쿼리는 4-4 분 정도 복용도 매우 느립니다

SELECT m.`meter_type` 
    FROM `tag` t 
      LEFT JOIN `tag_type` tt 
       ON tt.`id` = t.`tag_type_id` 
      LEFT JOIN `meter_type` m 
       ON m.`id` = tt.`meter_type_id` 
WHERE t.`id` = '10' 

이며,이 쿼리는 MySQL의 서버를합니다. tag_type_idmeter_type_id을 :

어떻게 ... 속도

+5

쿼리를 분석하고 적절한 인덱스를 추가하려면'explain'을 사용하십시오. –

+0

색인 생성이 도움이되지 않으면 20 초 이내에 완료 될 3 개의 diff 쿼리를 실행할 수 있습니다. :) –

답변

2

나는 당신이이 필드에 인덱스를 추가하지 않은 내기와이 쿼리를 작성하는 다른 방법으로이 문제를 해결합니다. 입력란에 색인을 올바르게 추가하는 방법은 MySQL Documentation입니다.