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



2 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



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

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

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




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



Related