>데이터 베이스 >MySQL 튜토리얼 >SQL 쿼리에서 WHERE 절이나 조인 기준 필터가 더 빠릅니까?

SQL 쿼리에서 WHERE 절이나 조인 기준 필터가 더 빠릅니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-01 02:26:09441검색

Is a WHERE Clause or Join Criteria Filter Faster in SQL Queries?

조인 기준과 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 절: 143016ms
  • 결합 기준: 143256ms

논리적 일관성

성능도 중요한 고려 사항이지만 논리적 일관성도 마찬가지로 중요합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.