sql >> Database teknologi >  >> RDS >> Sqlserver

Er Merge og Merge join det samme i SQL Server?

FLET er en DML-sætning (datamanipulationssprog).
Også kaldet UPSERT (Update-Insert).
Den forsøger at matche kilden (tabel/visning/forespørgsel) til et mål (tabel/opdaterbar visning) baseret på dine definerede betingelser og derefter, baseret på de matchende resultater, indsætter/opdater/slet rækker til/i/af måltabellen.
FLET (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 |
+---+----+

FLET JOIN er en joinalgoritme (f.eks. HASH JOIN eller NESTED LOOPS).
Den er baseret på først at sortere begge datasæt i henhold til joinbetingelserne (måske allerede sorteret på grund af indekset eksisterende) og derefter at gå gennem de sorterede datasæt og finde matches.

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 indebærer en primær nøgle en klynget indeksstruktur, hvilket betyder, at tabellen er gemt som et B-Tree, sorteret efter den primære nøgle.

Forstå sammenfletninger




  1. Understøtter nogen JDBC-drivere LOAD DATA INFILE sql-kommandoen?

  2. Fuldtekstsøgning i Postgres eller CouchDB?

  3. Postgres-funktion til at validere e-mail-adresse

  4. Oracle glidende gennemsnit