다음과 같은 쿼리가 있다고 가정 해보십시오.
select a.*,b.*
from
a join b
on a.col1=b.col1
and len(a.col1)=10
위 쿼리에서 해시 조인을 사용하고 잔차가 있다고 가정하면 프로브 키는 col1
이고 잔차는입니다 len(a.col1)=10
.
그러나 다른 예를 거치면서 프로브와 잔차가 모두 같은 열임을 알 수 있습니다. 아래는 내가 말하려는 것에 대한 설명입니다.
질문:
select *
from T1 join T2 on T1.a = T2.a
프로브 및 잔차가 강조 표시된 실행 계획 :
테스트 데이터 :
create table T1 (a int, b int, x char(200))
create table T2 (a int, b int, x char(200))
set nocount on
declare @i int
set @i = 0
while @i < 1000
begin
insert T1 values (@i * 2, @i * 5, @i)
set @i = @i + 1
end
declare @i int
set @i = 0
while @i < 10000
begin
insert T2 values (@i * 3, @i * 7, @i)
set @i = @i + 1
end
의문:
프로브와 잔차는 어떻게 같은 열이 될 수 있습니까? SQL Server에서 프로브 열만 사용할 수없는 이유는 무엇입니까? 행을 다시 필터링하기 위해 잔차와 동일한 열을 사용해야하는 이유는 무엇입니까?
테스트 데이터에 대한 참조 :