개념적으로 필자는 시스템의 모든 사용자에 대해 8 개의 개별 설문 조사 점수를 얻으려고합니다. 동일한 행에 출력 된 주어진 사용자에게 연결된 8 개의 점수를 출력하고 싶습니다. 다음은이를 달성하기 위해 최선 샷 :MySQL Query Optimization은 불필요한 조인을 제거합니다.
이SELECT cp.CONSUMER_ID,
bsr1.SCORE AS SET_1_SCORE,
bsr2.SCORE AS SET_2_SCORE,
bsr3.SCORE AS SET_3_SCORE,
bsr4.SCORE AS SET_4_SCORE,
bsr5.SCORE AS SET_5_SCORE,
bsr6.SCORE AS SET_6_SCORE,
bsr7.SCORE AS SET_7_SCORE,
bsr8.SCORE AS SET_8_SCORE
FROM
CONSUMER_PROFILE AS cp
LEFT JOIN survey_scores AS bsr1
ON bsr1.SET_ORDER=1
AND bsr1.CUSTOMER_ID=cp.CONSUMER_ID
LEFT JOIN survey_scores AS bsr2
ON bsr2.SET_ORDER=2
AND bsr2.CUSTOMER_ID=cp.CONSUMER_ID
LEFT JOIN survey_scores AS bsr3
ON bsr3.SET_ORDER=3
AND bsr3.CUSTOMER_ID=cp.CONSUMER_ID
LEFT JOIN survey_scores AS bsr4
ON bsr4.SET_ORDER=4
AND bsr4.CUSTOMER_ID=cp.CONSUMER_ID
LEFT JOIN survey_scores AS bsr5
ON bsr5.SET_ORDER=5
AND bsr5.CUSTOMER_ID=cp.CONSUMER_ID
LEFT JOIN survey_scores AS bsr6
ON bsr6.SET_ORDER=6
AND bsr6.CUSTOMER_ID=cp.CONSUMER_ID
LEFT JOIN survey_scores AS bsr7
ON bsr7.SET_ORDER=7
AND bsr7.CUSTOMER_ID=cp.CONSUMER_ID
LEFT JOIN survey_scores AS bsr8
ON bsr8.SET_ORDER=8
AND bsr8.CUSTOMER_ID=cp.CONSUMER_ID
이 적절한 출력을 반환합니다,하지만하지만 정말 느립니다. 최적화 방법을 어떻게 제안 하시겠습니까?
'EXPLAIN' 출력을 게시하십시오. – derobert