MySQL/MariaDB 쿼리 최적화 변경: 하위 쿼리에서 Order By
MySQL 5.5 이하 버전으로 쿼리할 때 하위 쿼리의 ORDER BY 절이 적용되었습니다. 가장 바깥쪽 쿼리의 SELECT 앞에. 그러나 MariaDB 10.0.14에서는 이 동작이 변경되어 이제 LIMIT가 없을 때 하위 쿼리 ORDER BY 절이 무시됩니다.
이 문제를 해결하기 위해 MariaDB는 ORDER BY 절을 가장 바깥쪽 쿼리에 적용하거나 다음을 사용하는 것을 권장합니다. 하위 쿼리의 LIMIT.
문서화됨 동작
MariaDB 문서에 따르면 FROM 절의 하위 쿼리는 순서가 지정되지 않은 행 집합이며 이 컨텍스트에서는 일반적으로 ORDER BY 절이 무시됩니다. 문서의 다음 인용문은 자세한 내용을 제공합니다.
""테이블"(및 FROM 절의 하위 쿼리도 포함)은 SQL 표준에 따라 순서가 지정되지 않은 행 집합입니다. FROM 절의 하위 쿼리에서)은 특정 순서로 오지 않습니다. 이것이 바로 최적화 프로그램이 사용자가 지정한 ORDER BY 절을 무시할 수 있는 이유입니다. 실제로 SQL 표준에서는 ORDER BY 절을 허용하지 않습니다. 이 하위 쿼리에 나타납니다(ORDER BY ... LIMIT ...는 순서뿐만 아니라 결과, 행 집합도 변경하기 때문에 허용합니다)."
따라서 하위 쿼리를 다음과 같이 처리하는 것이 좋습니다. 순서가 지정되지 않은 집합을 사용하고 가장 바깥쪽 쿼리에 ORDER BY 절을 배치하거나 필요에 따라 LIMIT를 사용합니다.
위 내용은 MariaDB의 하위 쿼리에서 ORDER BY 처리가 어떻게 변경되었으며 권장 솔루션은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!