SAMMANSLUT är en DML-sats (datamanipulationsspråk).
Även kallad UPSERT (Update-Insert).
Den försöker matcha källan (tabell / vy / fråga) till ett mål (tabell / uppdateringsbar vy) baserat på dina definierade villkor och sedan, baserat på de matchande resultaten, infoga/uppdatera/radera rader till/i/i måltabellen.
SAMMANFATTNING (Transact-SQL)
create table src (i int, j int);
create table trg (i int, j int);
insert into src values (1,1),(2,2),(3,3);
insert into trg values (2,20),(3,30),(4,40);
merge into trg
using src
on src.i = trg.i
when not matched by target then insert (i,j) values (src.i,src.j)
when not matched by source then update set trg.j = -1
when matched then update set trg.j = trg.j + src.j
;
select * from trg order by i
+---+----+
| i | j |
+---+----+
| 1 | 1 |
+---+----+
| 2 | 22 |
+---+----+
| 3 | 33 |
+---+----+
| 4 | -1 |
+---+----+
SAMMANSLUTNING JOIN är en kopplingsalgoritm (t.ex. HASH JOIN eller NESTED LOOPS).
Den bygger på att först sortera båda datamängderna enligt kopplingsvillkoren (kanske redan sorterade på grund av att index finns) och sedan gå igenom de sorterade datamängderna och hitta matchningar.
create table t1 (i int)
create table t2 (i int)
select * from t1 join t2 on t1.i = t2.i option (merge join)
create table t1 (i int primary key)
create table t2 (i int primary key)
select * from t1 join t2 on t1.i = t2.i option (merge join)
I SQL Server innebär en primärnyckel en klustrad indexstruktur vilket innebär att tabellen lagras som ett B-träd, sorterat efter primärnyckeln.