>데이터 베이스 >MySQL 튜토리얼 >교차 적용과 내부 조인: 언제 교차 적용이 대규모 데이터 세트에 탁월한 효율성을 제공합니까?

교차 적용과 내부 조인: 언제 교차 적용이 대규모 데이터 세트에 탁월한 효율성을 제공합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-20 11:27:11430검색

Cross Apply vs. Inner Join: When Does Cross Apply Offer Superior Efficiency for Large Datasets?

교차 적용과 내부 조인: 대규모 데이터 세트의 성능 최적화

교차 적용은 내부 조인으로 쉽게 달성할 수 없는 복잡한 테이블 관계나 작업을 처리할 때 특히 유용합니다. 왼쪽 테이블의 모든 행에 대해 오른쪽 테이블에서 행을 생성합니다.

교차 적용과 내부 조인 모두 비슷한 결과를 얻을 수 있지만 특히 광범위한 데이터 세트를 처리하고 파티셔닝 또는 페이징을 사용할 때 교차 적용이 뛰어난 효율성을 나타내는 경우가 많습니다.

교차 적용의 주요 장점은 사용자 정의 함수(UDF) 없이도 오른쪽 테이블로 작동할 수 있어 다양한 상황에서 유연성을 제공한다는 것입니다.

성능 차이를 강조하기 위해 2천만 개의 레코드가 포함된 "마스터" 테이블이 있는 시나리오를 살펴보겠습니다. 더 작은 "t" 테이블의 각 레코드에 대해 마지막 3개 행을 검색하는 내부 조인 쿼리에는 약 30초가 걸립니다.

<code class="language-sql">WITH q AS
        (
        SELECT  *, ROW_NUMBER() OVER (ORDER BY id) AS rn
        FROM    master
        ),
        t AS 
        (
        SELECT  1 AS id
        UNION ALL
        SELECT  2
        )
SELECT  *
FROM    t
JOIN    q
ON      q.rn <= t.id</code>

그러나 동등한 교차 적용 쿼리는 거의 즉시 완료됩니다.

<code class="language-sql">WITH    t AS 
        (
        SELECT  1 AS id
        UNION ALL
        SELECT  2
        )
SELECT  *
FROM    t
CROSS APPLY
        (
        SELECT  TOP (t.id) m.*
        FROM    master m
        ORDER BY
                id
        ) q</code>

이러한 극적인 성능 차이는 대규모 데이터세트 내에서 복잡한 데이터 조작을 처리할 때 교차 적용의 효율성 이점을 강조합니다.

위 내용은 교차 적용과 내부 조인: 언제 교차 적용이 대규모 데이터 세트에 탁월한 효율성을 제공합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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