하위 쿼리 대신 조인을 사용할 때 개발자에게 엄지 손가락 규칙이 있습니까?쿼리 또는 하위 쿼리 조인
답변
RDBMS에 따라 다름. 두 쿼리의 실행 계획을 비교해야합니다.
오라클 10 및 11 환경에서의 실행 계획은 항상 동일합니다.
이론적으로 모든 하위 쿼리를 조인 쿼리로 변경할 수 있습니다.
성능 측면에서 볼 때, 최신 DB 엔진에는 성능상의 차이가 없습니다.
하위 쿼리의 문제점은 키가없는 하위 결과 집합을 종료 할 수 있으므로 가입하는 것이 더 비쌉니다.
가능한 경우 항상 JOIN 쿼리를 작성하고 WHERE 대신 ON 절로 필터링하십시오 (현대 엔진이 이에 맞게 최적화되어 있어야 함에도 불구하고).
많은 것들과 마찬가지로, 그것은 다릅니다. - 얼마나 복잡한 서브 쿼리입니까 - 서브 쿼리 실행 빈도는 얼마나됩니까
할 수 있으면 언제든지 서브 쿼리를 피하려고합니다. 특히 결과 집합의 각 항목에 대해 하위 쿼리가 실행되는 경우 큰 결과 집합이 하위 쿼리를 사용하지 않아야합니다.
테이크 관리, SQL 서버에서 알렉스
는 상관 하위 쿼리는 일반적으로 참가하거나, 성능을 종종 더 나은하는 파생 테이블에 조인보다 더 수행한다. 나는 여러 번 수행되어야 할 어떤 것에 대해서도 하위 쿼리를 작성하지 않습니다. 상관 관계가있는 하위 쿼리는 기본적으로 쿼리를 커서로 바꾸고 한 번에 하나의 행을 실행하기 때문입니다. 데이터베이스의 경우 일반적으로 집합 기반 방식으로 작업하는 것이 더 좋습니다.
"조기 최적화가 모든 악의 근원"이라는 사실을 알고 있다면 지금은 성능에 미치는 영향을 무시해 봅시다.
무엇이 더 명확하고 쉽게 유지할 것인지 선택하십시오.
첫 번째 원칙은 "쿼리를 정확하게 나타 내기"입니다. 두 번째 원칙은 "쿼리를 간단하고 명백하게"(보통 선택을하는 곳)입니다. 세 번째는 "쿼리를 효율적으로 처리 할 수 있도록 상태를 기술하는 것"입니다.
좋은 쿼리 프로세서를 사용하는 dbms 인 경우 동일한 쿼리 디자인은 동일한 쿼리 계획 (적어도 동등한 효율)을 가져야합니다.
처음으로 MySQL을 사용했을 때 가장 큰 불만은 내가 옵티 마이저를 예상해야한다는 것을 얼마나 의식적으로 생각했는지입니다. Oracle, SQL Server, Informix 및 기타 dbms 제품에 대한 오랫동안의 경험을 통해 이러한 문제에 대한 우려는 거의 없습니다. 새로운 버전의 MySQL을 사용하면 더 좋지만, 다른 것들보다 더 자주주의를 기울일 필요가 있습니다.
- 1. Transact-SQL - 하위 쿼리 또는 왼쪽 조인?
- 2. SQLite 쿼리 최적화 (하위 쿼리 및 조인)
- 3. 상관 하위 쿼리 대신 조인
- 4. 조인 대 linq의 하위 쿼리?
- 5. 성능 : 하위 쿼리 또는
- 6. MySQL 복수 조인/하위 쿼리 질문
- 7. WordPress : 테이블 조인 된 하위 쿼리
- 8. SQL Server - 업데이트 문에서 조인 또는 하위 쿼리?
- 9. SQL 쿼리 조인 요소
- 10. NHibernate - 예제 쿼리 - 하위 쿼리
- 11. php/mysql에서 조인 또는 다중 쿼리 사용
- 12. 내부 변환은 SQL 하위 쿼리
- 13. 하위 쿼리 내의 하위 쿼리 - 가능합니까?
- 14. 내부 조인 쿼리
- 15. 기본 조인 쿼리 이해
- 16. 복잡한 조인 쿼리
- 17. nHibernate 수 조인 쿼리
- 18. 오라클 조인 쿼리
- 19. MySQL의 최적화 쿼리 : 하위 쿼리
- 20. 하위 쿼리
- 21. 하위 쿼리
- 22. 조인의 하위 쿼리
- 23. Sqlite 하위 쿼리 : 하나의 큰 쿼리 또는 for 루프?
- 24. 조인/조인 두 테이블에 대한 SQL 쿼리
- 25. 가 하위 쿼리
- 26. 조인, 그룹화 및 하위 쿼리 사용, 오 마이!
- 27. 슬러그 또는 쿼리 ID로 쿼리?
- 28. MySQL은 쿼리, 하위 쿼리 최적화, SELECT는 가입
- 29. 하위 쿼리가있는 Oracle sql 쿼리 또는 정규화해야합니까?
- 30. SQL 자체 조인 쿼리 도움말
상관 관계가있는 하위 쿼리의 경우에도 마찬가지입니까? 왜 당신은 "이론적으로"자격을 얻습니까? 질문에 대한 대답을 완료 할 수 있습니까? – dkretz