MySQL 쿼리의 "인덱스 사용, 임시 사용, 파일 정렬 사용" 오류 처리
MySQL 쿼리 작업 시 흔히 발생하는 문제는 다음과 같습니다. "인덱스 사용, 임시 사용, 파일 정렬 사용"이라는 경고가 표시됩니다. 이 메시지는 MySQL이 성능에 영향을 미칠 수 있는 임시 테이블 및 파일 정렬 작업에 의존하고 있음을 나타냅니다.
이 특별한 경우 쿼리는 두 가지 성능 문제로 어려움을 겪습니다.
-
임시 테이블 사용: 쿼리에는 여러 테이블의 다른 GROUP BY 절과 열이 있는 ORDER BY 절이 포함되어 있습니다. 이는 MySQL이 임시 테이블을 생성하도록 트리거합니다.
-
Filesort 사용: ORDER BY 절은 인덱스를 사용하여 수행할 수 없는 계산된 필드를 기준으로 정렬합니다. 따라서 MySQL은 filesort를 사용합니다.
이러한 문제를 해결하려면:
-
임시 테이블 문제의 경우: 다른 ORDER BY 및 GROUP BY 절을 사용하지 마세요. 또는 이러한 절에서 동일한 테이블의 열을 사용하십시오.
-
파일 정렬 문제의 경우: ORDER BY 절에 사용된 계산 필드에 인덱스를 생성해 보십시오.
최적화된 쿼리 버전은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | EXPLAIN SELECT
el.object_id,
leo.object_desc,
COUNT (el.object_id) as count_rows
FROM
event_log el
LEFT JOIN lookup_event_objects leo ON leo.object_id = el.object_id
GROUP BY
el.object_id
ORDER BY
count_rows DESC,
leo.object_desc ASC
|
로그인 후 복사
임시 테이블 및 파일 정렬 작업의 사용을 제거함으로써 이 수정된 쿼리는 성능을 향상시킵니다.
위 내용은 \'인덱스 사용, 임시 사용, 파일 정렬 사용\' 오류로 MySQL 쿼리를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!