일부 테이블의 조인을 기반으로보기 (viewX
)가 있습니다.MySQL Query에서 HAVING과 WHERE의 차이점은 무엇입니까?
WHERE
을 사용할 때 쿼리가 지연되고 프로세서 사용량이 50 %로 이동하고 마지막으로 mysqld.exe
서비스를 닫고 해당 문제를 해결하기 위해 다시 시작해야합니다. 다시 문제.
HAVING
를 사용하면 쿼리가 완벽하고 신속하게 실행되어 결과를 얻고 모든 준비가 완료됩니다.
쿼리는 다음과 유사합니다.
SELECT * FROM viewX WHERE column_of_view = 'foo'
SELECT * FROM viewX HAVING column_of_view = 'foo'
현재 무슨 일입니까?
내가 찾은 해결책은 다음과 같이하는 것입니다.
SELECT * FROM (SELECT * FROM viewX) as T WHERE column_of_view = 'foo'
SELECT * FROM (SELECT * FROM viewX) as T HAVING column_of_view = 'foo'
두 가지 질문이 모두 효과가 있지만 좋지 않습니다. (SELECT * FROM (... viewX) ????)
일부 실행 계획을 게시 할 수 있습니까? – Thilo
최선의 추측은 HAVING을 사용하면 나와 같은 혼동을 불러 일으키는 것과 마찬가지로 쿼리 최적화 프로그램을 혼란스럽게 만들고 다른 혼동 순서 (다른 조인 순서 및 방법)가 발생한다는 것입니다.이 경우 실제로 이점이 있습니다. 많은 조인, 차선 조인 순서의 잠재 성은 엄청납니다). 첫 번째 몇 개의 행을 더 빨리 반환 할 것인가, 아니면 전체 행을 전체적으로 더 빨리 선택합니까? – Thilo
둘 다 지정하면 어떻게됩니까? – Thilo