GROUP BY
을 잠시 제쳐두 자. 일반적인 쿼리 (GROUP BY
제외)에서 의미 적 차이는 무엇입니까? this answer은 왜 작동합니까? GROUP BY
가 적용되기 전에 WHERE
전체 테이블 작동 -WHERE와 HAVING 사이의 의미상의 차이점은 무엇입니까?
답변
HAVING
이 요약 행상에서 동작 (WHERE
대신에 HAVING
절에 별명을 넣어). (GROUP BY
을 제외하면 HAVING
은 GROUP BY
과 함께 사용하기 위해 예약 된 절이므로 GROUP BY
을 생략해도 배후에서 암시 적으로 발생하는 동작은 변경되지 않습니다.
이 때문에 WHERE
은 색인을 사용할 수 있지만 HAVING
은 색인을 사용할 수 없습니다. (매우 단순한 그룹화되지 않은 결과 집합에서는 이론적으로 HAVING
에 대한 인덱스를 사용할 수 있지만 쿼리 최적화 프로그램이 실제로 이런 식으로 구현 된 것을 본 적이 없습니다.)
MySQL은 WHERE
절까지 쿼리를 평가 한 다음 HAVING
절로 필터링합니다. 그렇기 때문에 HAVING
은 열 별칭을 인식 할 수 있지만 WHERE
은 인식 할 수 없습니다.
GROUP BY
절을 생략하면 검색 결과를 그룹화하지 말라는 의미입니다.
의미 론적 차이점이 아닙니다. 또는 적어도, 나는이 의미를 이해하지 못한다.) 구현 세부 사항처럼 들립니다. – ripper234
매우 광범위하게는 WHERE
이 쿼리 (DB 테이블)로 들어가는 데이터를 필터링하는 반면 HAVING
은 쿼리 출력을 필터링합니다.
WHERE
절의 문은 테이블 (및 기타 외부 데이터 원본) 만 참조 할 수 있으며 HAVING
절의 문은 쿼리에서 생성 한 데이터를 참조 할 수 있습니다.
- 1. 코코아 터치. 클래스 메소드 초기화 버전 alloc/init 사이의 의미상의 차이점은 무엇입니까?
- 2. before와 before 사이의 차이점은 무엇입니까?
- 3. MATLAB의 {}과 [] 사이의 차이점은 무엇입니까?
- 4. 두 SQL 문 사이의 차이점은 무엇입니까?
- 5. GROUP BY와 ORDER BY 사이의 차이점은 무엇입니까?
- 6. WH_MOUSE와 WH_MOUSE_LL 후크 사이의 차이점은 무엇입니까?
- 7. struct reg와 struct user_regs_struc 사이의 차이점은 무엇입니까?
- 8. jQuery의 live()와 ready() 사이의 차이점은 무엇입니까?
- 9. len()과 .__ len __() 사이의 차이점은 무엇입니까?
- 10. 연산자 new와 연산자 new [] 사이의 차이점은 무엇입니까?
- 11. 모듈에서 루비 1.8.7과 1.9.1 사이의 차이점은 무엇입니까?
- 12. 이러한 선언 사이의 기술적 차이점은 무엇입니까?
- 13. 컨트롤러와 메쏘드에서의 requestMapping 사이의 차이점은 무엇입니까?
- 14. xsl의 for-each와 templates 사이의 차이점은 무엇입니까?
- 15. CLONE과 오브젝트 복사 사이의 차이점은 무엇입니까?
- 16. 하위 창과 하위 창 사이의 차이점은 무엇입니까?
- 17. Python win32crypt.CryptProtectData의 2.5와 3.1 사이의 차이점은 무엇입니까?
- 18. Array.length = 0과 Array = [] 사이의 차이점은 무엇입니까?
- 19. Environment.Exit()과 Application.Shutdown() 사이의 차이점은 무엇입니까?
- 20. 조롱 클래스와 인터페이스 사이의 차이점은 무엇입니까?
- 21. Postgresql HAVING 절 제한
- 22. QueryOver를 사용하는 NHibernate : WHERE와 EXISTS
- 23. 스핑크스에 HAVING 성명서가 있습니까?
- 24. PostgreSQL - 별칭 열과 HAVING
- 25. SQL은 HAVING 절
- 26. 신비 HAVING 절
- 27. MySQL`HAVING` 문제
- 28. Where와 OrderBy 절을 효율적으로 처리하는 방법
- 29. Vista Home Premium과 Ultimate 사이의 실제 일별 운영상의 차이점은 무엇입니까?
- 30. Python과 Scheme 사이의 변수 범위 지정의 차이점은 무엇입니까?
하지만 내가 연결 한 대답은 GROUP BY를 전혀 포함하지 않습니다 ... – ripper234
@ ripper234 : 해당 쿼리와 GROUP BY 쿼리에 대한 쿼리 분석기를 보면 이상하게 동일하다는 것을 알 수 있습니다 (실제 표현 값을로드하는 것을 제외하고) HAVING 절을 적용하기 위해 결과 집합의 모든 요소에 대해 GROUP BY - O (n) 반복의 "페널티"를 지불해야합니다. –
@ ripper234 : GROUP BY 연산자에 대한 MySQL 확장이며 GROUP BY를 집계되지 않은 열의 하위 집합과 함께 사용하는 것과 같습니다. http://rpbouman.blogspot.com/2007/05/debunking-group-by-myths.html –