2012-06-29 8 views
2

아래 쿼리는보기에서 17 초 내에 실행됩니다. 450,000 개의 행이 있습니다. 나는 두 개의 컬럼에 대한 인덱스를 가지고 있고 FK이다. 조인 C 럼은 BIGINTS입니다. 이 사람을 속력을 내기 위해 어쨌든 있습니까?MySQL Join Performance

SELECT c.id, sce.user_id 
FROM sims_classroom c 
JOIN sims_class_enrollment sce ON c.id = sce.classroom_id 

그것은 느려집니다

'1', 'SIMPLE', 'c', 'index', 'PRIMARY', 'PRIMARY', '8', NULL, '211213', 'Using index' 
'1', 'SIMPLE', 'sce', 'ref', 'fk_class_enrollment_classroom_id', 'fk_class_enrollment_classroom_id', '9', 'ngsp.c.id', '1', 'Using where' 

ROWS

sims_classroom = 200100 
sims_class_enrollment = 476396 
+3

검색어에 [EXPLAIN] (http://dev.mysql.com/doc/refman/5.5/en/explain.html)을 사용하고 결과를 알려주십시오. – Jocelyn

+0

'sims_classroom'과'sims_class_enrollment'의 행 수가 너무 많습니다 –

+0

질문이 업데이트되었습니다. –

답변

2

을 EXPLAIN 조금을 기록하지만 당신은 모든 것을 가진 단 하나의 열 짧은 것 때문에 당신이 필요한 당신 인덱스, 난 2 열 인덱스에 대한 겁니까 :

classroom_id, user_id 

이렇게하면 mysql이 실제 테이블로 이동하지 않아도된다 (둘 다 설명에서 '인덱스 사용'이 됨).