수백만 개의 레코드가 있는데 동일한 레코드에 대해 서로 다른 연결이 필요한 상황에 봉착했습니다. 주문 조건에도 까다로운 부분이 있습니다. 정렬을 적용하지 않으면 쿼리가 빠른 결과를 수행합니다. 그런데 주문조항을 적용하면 결과를 얻기까지 너무 많은 시간이 걸린다.
Order 절이 없으면 5-6초가 소요됩니다.
주문 조건을 적용하면 결과는 40-45초
입니다.
으아악
참고: 모든 조인이 중요합니다. 일부 고려 사항을 위해 선택 쿼리에서 필드가 제거되었습니다.
설명 요약
문제는 LIMIT와 ORDER BY의 조합입니다.
ORDER BY가 없으면 처음 10개의 임의 행이 선택되면 쿼리가 중지됩니다. order by 쿼리는 가능한 모든 행을 수집하고 순서대로 정렬한 다음 처음 10개 행만 반환해야 합니다.
"연기_상담_날짜시간"이 계산된 필드라는 점을 고려하면 실제로 더 빠르게 할 수 있는 방법은 없습니다.