복잡한 쿼리에서 ORDER BY를 사용할 때 성능 저하
여러 조인과 하위 쿼리가 포함된 복잡한 쿼리에서 ORDER BY 절을 추가하면 실행 시간이 상당히 느려집니다. 이 문제는 4개의 테이블을 포함하고 13개의 행만 반환하는 쿼리에서 보고되었습니다. 쿼리는 ORDER BY 절 없이 빠르게 실행되지만 추가되면 느려집니다.
해결 방법
이 성능 문제를 해결하려면 쿼리를 다음으로 래핑하는 것이 좋습니다. 하위 쿼리를 만들고 ORDER BY 절을 외부 쿼리에 적용합니다. 수정된 쿼리는 다음과 같습니다.
SELECT * FROM ( SELECT Course.CourseID, Course.Description, UserCourse.UserID, UserCourse.TimeAllowed, UserCourse.CreatedOn, UserCourse.PassedOn, UserCourse.IssuedOn, C.LessonCnt FROM UserCourse INNER JOIN Course USING(CourseID) INNER JOIN ( SELECT CourseID, COUNT(*) AS LessonCnt FROM CourseSection GROUP BY CourseID ) C USING(CourseID) WHERE UserCourse.UserID = 8810 ) ORDER BY CourseID;
설명
이 솔루션이 작동하는 이유는 최적화 프로그램이 ORDER BY 작업과 관계없이 하위 쿼리를 평가할 수 있기 때문입니다. 그 결과 느린 ORDER BY 작업의 영향을 받지 않는 더욱 효율적인 실행 계획이 탄생합니다.
위 내용은 ORDER BY를 사용하면 SQL 쿼리가 느려지는 이유는 무엇이며 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!