13 개의 LEFT OUTER JOINS를 사용하는 쿼리가 있습니다. 왼쪽 테이블에는 큰 데이터가 있으므로 쿼리를 실행하고 결과를 반환하는 데 많은 시간이 걸립니다. 그러나 where 절을 사용하여 결과를 필터링 할 때 시간이 매우 짧습니다. 이제 나는 어느 것이 먼저 실행되는지 혼란 스럽습니다 : 결과를 생성하는 조인과 그로부터 where 절 필터 또는 먼저 결과의 조인을 취하는 결과를 필터링합니다.이 먼저 실행됩니다. 조인 또는 where 절
10
A
답변
10
일반적으로 모든 DBMS (예 : SQL)는 가장 빠른 것으로 생각되는 알고리즘을 사용하는 자체 쿼리 최적화를 수행합니다. 그래서 필터링 중이고 가입합니다.
2
읽기 : which one runs first in query execution WHERE CLAUSE orJOIN CLAUSE ?
및
내가 PINAL 데이브의 게시물을 레딩, 그리고 난이 발견, 당신이 이해하는 데 도움을 talso migh
ON 절을 이해하는 것은 JOIN 전에 적용됩니다. 이는 Flag = 1 인 Table2의 모든 결과를 검색하지만 Table1에 영향을 미치지 않으므로 table1의 모든 행을 검색합니다. WHERE 절이 적용되면 완전한 결과에 적용될 때 Table1과 Table2에서 Flag1이 같지 않은 모든 행이 제거되므로 기본적으로 Table1과 Table2에서 flag = 1 행이 유지됩니다.
2
Copied from my previous answer
create table A(id int);
create table B(id int);
INSERT INTO A VALUES(1);
INSERT INTO A VALUES(2);
INSERT INTO A VALUES(3);
INSERT INTO B VALUES(1);
INSERT INTO B VALUES(2);
INSERT INTO B VALUES(3);
SELECT * FROM A;
SELECT * FROM B;
id
-----------
1
2
3
id
-----------
1
2
3
필터의 상기 가입 과정에서 첨가되는 행을 방지하기 위해 가입.
select a.*,b.*
from A a left join B b
on a.id =b.id and a.id=2;
id id
----------- -----------
1 NULL
2 2
3 NULL
JOIN이 발생한 후 필터링됩니다.
select a.*,b.*
from A a left join B b
on a.id =b.id
where a.id=2;
id id
----------- -----------
2 2
관련 문제
- 1. 두 내부 조인 먼저 절
- 2. Where 조인 조건 Where 조인 Where Where 절
- 3. DB2 SQL 조인 또는 where 절
- 4. 왼쪽 조인 테이블이있는 Where 절
- 5. 조인 된 테이블의 여러 WHERE 절
- 6. T-SQL : 조건부 조인 또는 회선 WHERE 절?
- 7. 조인 된 테이블에 동적 where 절 적용
- 8. 조인 쿼리의 where 절 laravel 4.2
- 9. SQL 내부 조인. ON 조건과 WHERE 절
- 10. where 절
- 11. nhibernate의 where 절
- 12. MySQL의 where 절
- 13. where 절
- 14. Where Join Where Where Where Where 절
- 15. 자바 스크립트`confirm()`이 (가) 먼저 실행됩니다.
- 16. where 절
- 17. 선택적 시간 where 절
- 18. where 두 절 사이의 절
- 19. 배열 문제, where 절
- 20. 조인에 영향을 미치는 Where 절
- 21. WHERE 절 오류
- 22. sql join where where 절
- 23. WHERE 절 또는 COUNT 내에 COUNT가 있습니까?
- 24. 레일 범위 2 where where where 절
- 25. Lambda Where 절 오류
- 26. 문제가 Linq Where 절
- 27. Querydsl case where where 절
- 28. 사례 구문 where where 절
- 29. 향상된 where 절
- 30. linq, where where 절? (inner where)
서버가 작업을보다 쉽게 수행 할 수 있도록 관계없이 SQL 서버의 쿼리 최적화 프로그램이 주위에 당신의 단계를 임의 재생으로 선택하는 방법, 당신이 할 수있는 최선의 일은 당신의 자료를 제대로 유지하고 색인을 유의하십시오. –
잘 유지'통계 '도 도움이됩니다. – MarkD
당신이 정보를 가지고 있다면 받아들이는 것을 잊지 말고 upvote하는 것을 잊어 버려라. –