Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy scalanie i scalanie są takie same w programie SQL Server?

POŁĄCZ to instrukcja DML (język manipulacji danymi).
Nazywana również UPSERT (Update-Insert).
Próbuje dopasować źródło (tabela/widok/zapytanie) do celu (tabela/widok z możliwością aktualizacji) na podstawie zdefiniowane przez Ciebie warunki, a następnie na podstawie pasujących wyników wstawia/aktualizuje/usuwa wiersze do/w/w tabeli docelowej.
Scalanie (języka 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 |
+---+----+

POŁĄCZ DOŁĄCZ jest algorytmem łączenia (np. HASH JOIN lub NESTED LOOPS).
Opiera się na pierwszym sortowaniu obu zbiorów danych zgodnie z warunkami łączenia (być może już posortowane ze względu na istniejący indeks), a następnie przejściu przez posortowane zbiory danych i znalezieniu dopasowań.

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)

W SQL Server klucz podstawowy oznacza klastrową strukturę indeksu, co oznacza, że ​​tabela jest przechowywana jako drzewo B, posortowane według klucza podstawowego.

Zrozumienie złączeń scalających




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. varbinary do ciągu w SQL Server

  2. Błąd „Nie można opuścić wyzwalacza” podczas próby opuszczenia wyzwalacza logowania? Spróbuj tego.

  3. Porównanie dwóch masek bitowych w SQL w celu sprawdzenia, czy któryś z bitów pasuje

  4. Nazwa kolumny FirstName określona w operatorze PIVOT jest w konflikcie z istniejącą nazwą kolumny w argumencie PIVOT

  5. Usuń zdarzenia z dziennika poczty bazy danych w programie SQL Server (T-SQL)