Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Едно и също ли е Merge и Merge join в SQL Server?

ОБЕДИНИ е DML израз (език за манипулиране на данни).
Нарича се още UPSERT (Update-Insert).
Той се опитва да съпостави източника (таблица/изглед/заявка) с цел (таблица/изглед с възможност за актуализиране) въз основа на определени от вас условия и след това въз основа на съответстващите резултати вмъква/актуализира/изтрива редове в/в/от целевата таблица.
ОБЛИВАНЕ (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 |
+---+----+

ОБЕДИНЯВАНЕ С ОБЕДИВАНЕ е алгоритъм за свързване (напр. HASH JOIN или NESTED LOOPS).
Той се основава на първо сортиране на двата набора от данни според условията на свързване (може би вече сортирани поради съществуващ индекс) и след това преминаване през сортираните набори от данни и намиране на съвпадения.

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)

В SQL Server първичният ключ предполага структура на клъстерен индекс, което означава, че таблицата се съхранява като B-Tree, сортирана по първичния ключ.

Разбиране на обединяванията при сливане




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Правилно използване на транзакциите в SQL Server

  2. Избягване на двойни кавички в SQL 2005/2008

  3. SQL Server:трябва ли да използвам таблици information_schema над sys таблици?

  4. Преобразувайте типа данни на изображението във varchar в sql сървър 2008

  5. Как да разберете към коя таблица принадлежи заключване на страница