Söyle, böyle bir sorgu var:
select a.*,b.*
from
a join b
on a.col1=b.col1
and len(a.col1)=10
Yukarıdaki sorgunun bir Karma Birleştirme kullandığını ve bir artık olduğunu varsayarsak, prob anahtarı olacak col1
ve artık olacaktır len(a.col1)=10
.
Ama başka bir örnek üzerinden geçerken, hem probun hem de artıkların aynı sütun olduğunu gördüm. Aşağıda söylemeye çalıştığım konu hakkında bir ayrıntı var:
Sorgu:
select *
from T1 join T2 on T1.a = T2.a
Prob ve artık vurgulanmış uygulama planı:
Test verisi:
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
Soru:
Bir prob ve artık nasıl aynı sütun olabilir? SQL Server neden yalnızca prob sütununu kullanamıyor? Neden satırları tekrar filtrelemek için artık sütunun aynı sütunu kullanması gerekiyor?
Test verileri için referanslar: