SQL Server 的 3 種連線

2021-09-06 18:47:38 字數 730 閱讀 5429

第一種 1、

nested loop:

select * from tablea inner join tableb on tablea.x = tableb.x;

它的執行過程是這樣的、對於tablea中的每一行sql server 都會去和tableb中的每一行

做對比、看它們的x值是否相等。

所以、對tableb執行查詢的次數就是tablea的行數,可以看出這個演算法的複雜度是tablea.count * tableb.count;

1、這個演算法適用於兩個比較小的表。

2、最好inner table (tableb)要有乙個合適的索引、這樣就可以不用對它進行全表掃瞄了

3、outer table (tablea) 如果有順序也會使查詢變得快一些。

第二種 2、

merge join :

它要求兩個表都是有順序的、也就是說、從兩邊的資料集裡各取乙個值,比較一下。如果相等,就把這兩行聯接起來

返回,如果不等就把小的值丟掉,按順序取下乙個值,兩邊資料集裡有乙個遍歷結束,整個join 也就完了。

1、它只可以做等值連線,

2、兩個表中最好不要有重複的列值。

第三種 3、

hash join:

與merge join 相似,它不是比列值是不是相等,比的是hash值是否相等。

1、它的演算法複雜度是分別遍歷兩邊資料集各一遍。

2、它不要求表有順序

3、可並行

SQL Server的3種恢復模型

恢復模型 優點 工作損失表現 能否恢復到即時點 簡單恢復 允許高效能大容量複製操作 收回日誌空間以使空間要求最小 必須重做自最新的資料庫或差異備份後所發生的更改 可以恢復到任何備份的結尾,隨後必須重做更改 完全恢復 資料檔案丟失或損壞不會導致工作損失 可以恢復到任意即時點 正常情況下沒有 如果日誌損...

SQL Server分頁3種方案比拼

建立表 create table testtable id int identity 1,1 not null firstname nvarchar 100 collate chinese prc ci as null lastname nvarchar 100 collate chinese pr...

SQL Server分頁3種方案比拼

建立表 create table testtable id int identity 1,1 not null firstname nvarchar 100 collate chinese prc ci as null lastname nvarchar 100 collate chinese pr...