Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A mesclagem e a mesclagem são iguais no SQL Server?


MERGURAR é uma instrução DML (linguagem de manipulação de dados).
Também chamado UPSERT (Update-Insert).
Tenta combinar a fonte (tabela / visualização / consulta) a um destino (tabela / visualização atualizável) com base em suas condições definidas e, em seguida, com base nos resultados correspondentes, ele insere/atualiza/exclui linhas para/na/da tabela de destino.
MERGE (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 |
+---+----+

MERGE JOIN é um algoritmo de junção (por exemplo, HASH JOIN ou NESTED LOOPS).
Ele é baseado em primeiro classificar ambos os conjuntos de dados de acordo com as condições de junção (talvez já ordenados devido ao índice existente) e depois percorrer os conjuntos de dados classificados e encontrar correspondências.
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)

No SQL Server, uma chave primária implica uma estrutura de índice clusterizado, o que significa que a tabela é armazenada como uma árvore B, classificada pela chave primária.



Compreendendo as junções de mesclagem