어떤 SQL 문이 더 빠릅니까? (HAVING 대 WHERE ...)


Answers

그것은 엔진에 달려 있습니다. 예를 들어 MySQL은 HAVING을 체인의 거의 마지막에 적용합니다. 즉 최적화를위한 여지는 거의 없습니다. manual :

HAVING 절은 항목이 클라이언트에 전송되기 직전에 최적화없이 거의 마지막에 적용됩니다. (LIMIT은 HAVING 후에 적용됩니다.)

이 동작은 대부분의 SQL 데이터베이스 엔진과 동일하지만 믿을 수는 없습니다.

Question
SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
    FROM  PRACOWNICY
    GROUP BY NR_DZIALU
    HAVING NR_DZIALU = 30

또는

SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
    FROM PRACOWNICY
    WHERE NR_DZIALU = 30
    GROUP BY NR_DZIALU



나는 WHERE 절이 더 빠를 것이라고 기대할 수 있지만 정확하게 동일하게 최적화 할 수는 있습니다.




두 문 모두 SQL Server가 똑같은 구문으로 동일한 문을 구문 분석 할만큼 똑똑하기 때문에 동일한 성능을 보입니다.

따라서 쿼리에서 WHERE 또는 HAVING을 사용하면 문제가되지 않습니다.

그러나 이상적으로 WHERE 구문을 구문 적으로 사용해야합니다.




Links