programing

MySQL LIMIT는 ORDER BY 이전 또는 이후에 적용됩니까?

megabox 2023. 8. 22. 22:03
반응형

MySQL LIMIT는 ORDER BY 이전 또는 이후에 적용됩니까?

MySQL이 쿼리를 처리할 때 가장 먼저 오는 것은 무엇입니까?

예:

SELECT pageRegions
FROM pageRegions WHERE(pageID=?) AND(published=true) AND (publishedOn<=?)
ORDER BY publishedON DESC
LIMIT 1';

ORDER BY 이후에 LIMIT가 적용되면 레코드가 수정 날짜 시간과 일치하지 않더라도 마지막으로 게시된 페이지Region을 반환합니까?

네, ORDER BY 이후입니다.쿼리의 경우, 주문 중이므로 게시된 On이 가장 높은 레코드를 얻을 수 있습니다.DESC결과 집합에서 가장 큰 값을 먼저 만들고 첫 번째 값을 선택합니다.

limit결과 수집이 끝날 때 항상 적용되므로, 이후order by.

당신의 모든 조항을 고려할 때, 처리 순서는 다음과 같습니다.

  • 부터
  • 어디에
  • 선택한다.
  • 주문 기준
  • 제한.

따라서 WHERE 절의 모든 조건에 일치하는 가장 가까운 레코드 <= publishedOn>을 얻을 수 있습니다.

결과를 제한하기 전에 MySQL ordering이 적용되는 경우를 지적하고자 합니다.그러나 다른 DB의 경우에는 그렇지 않습니다.

예를 들어 Oracle은 먼저 결과를 제한하고 해당 결과에 순서를 적용합니다.성과의 관점에서 생각해보면 일리가 있습니다.MySQL에서는 실제로 전체 DB(1000개 이상의 레코드)에 2개를 주문합니다.

언급URL : https://stackoverflow.com/questions/4974639/is-mysql-limit-applied-before-or-after-order-by

반응형