집 >데이터 베이스 >MySQL 튜토리얼 >SQL 쿼리에서 WHERE 절이나 조인 기준 필터가 더 빠릅니까?
조인 기준과 Where 절 중 어떤 SQL 쿼리가 더 빠릅니까?
이 질문은 조인 필터링이라는 두 가지 쿼리 구조의 성능을 비교합니다. 기준과 WHERE 절 사용 비교. 일반적인 가정은 조인 기준 필터링이 결과 집합을 더 일찍 줄이므로 더 빠르다는 것입니다. 그러나 이 믿음이 항상 사실이 아닐 수도 있습니다.
쿼리 비교
해보자 필터 배치를 제외하고 동일한 구조를 가진 두 개의 쿼리를 검사합니다.
쿼리 1(조인 시 필터 기준)
SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID INNER JOIN TableB b ON x.TableBID = b.ID WHERE a.ID = 1;
쿼리 2(WHERE 절에 필터링)
SELECT * FROM TableA a INNER JOIN TableXRef x ON a.ID = x.TableAID INNER JOIN TableB b ON x.TableBID = b.ID AND a.ID = 1;
성능 테스트
어떤 쿼리가 더 빠른지 확인하기 위해 성능 테스트가 수행되었습니다. 결과에 따르면 WHERE 절 필터링이 조인 기준을 사용하는 것보다 약간 더 빠른 것으로 나타났습니다. 경과 시간 차이는 최소화되었습니다.
논리적 일관성
성능도 중요한 고려 사항이지만 논리적 일관성도 마찬가지로 중요합니다. WHERE 절에 대한 필터링은 왼쪽 조인의 의미와 일치합니다. 다음 쿼리를 고려하십시오.
조인 기준에 필터를 사용하여 왼쪽 조인
SELECT * FROM TableA a LEFT JOIN TableXRef x ON x.TableAID = a.ID AND a.ID = 1 LEFT JOIN TableB b ON x.TableBID = b.ID;
WHERE 절에서 필터를 사용하여 왼쪽 조인
SELECT * FROM TableA a LEFT JOIN TableXRef x ON x.TableAID = a.ID LEFT JOIN TableB b ON b.id = x.TableBID WHERE a.id = 1;
왼쪽 조인의 경우 WHERE 절 필터는 일치하는 행만 보장합니다. 오른쪽 조인의 존재 여부에 관계없이 지정된 ID에 대해 반환됩니다. 이 동작은 논리적으로 일관되고 이해하기 쉽습니다.
결론
성능 차이는 미미하지만 WHERE 절에 대한 필터링이 약간 더 빠르고 논리적으로 더 일관됩니다. 특히 왼쪽 조인으로 작업할 때 그렇습니다. 따라서 일반적으로 성능과 가독성을 모두 고려하여 WHERE 절에 필터를 배치하는 것이 좋습니다.
위 내용은 SQL 쿼리에서 WHERE 절이나 조인 기준 필터가 더 빠릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!