SQL查詢中的join實(shí)現(xiàn)方式

一、(多表)連接方式分類

 T-SQL提供兩種連接方式:傳統(tǒng)方式和SQL連接方式

  1.傳統(tǒng)方式:SELECT 列1,列2,列3.... FROM  表1,表2,表3... WHERE condition

        這種方式會(huì)把表1,2,3做笛卡爾積(根據(jù)測(cè)試結(jié)果推測(cè),不一定準(zhǔn)確)

  2.SQL連接方式:

        1>.INNER JOIN,內(nèi)聯(lián),系統(tǒng)默認(rèn),相當(dāng)于JOIN 。返回多表之間完全匹配的結(jié)果。

2>.LETF JOIN ,左聯(lián),返回除了有完全匹配的結(jié)果還有左表所有行。

3>.RIGHT JOIN ,右聯(lián),返回除了有完全匹配的結(jié)果還有右表所有行。

4>.Full JOIN ,完全外鏈接,返回除了有完全匹配的結(jié)果還有左右表所有行。

其中LETF JOIN、RIGHT JOIN和Full JOIN 均屬于外連接(OUTER JOIN)

5>.CROSS JOIN,交叉連接,又稱為自然連接,即生成一個(gè)笛卡爾積。(應(yīng)該類似于傳統(tǒng)方式)

二、SQL Server JOIN 內(nèi)部實(shí)現(xiàn)的三種算法:

1. Loop join(嵌套循環(huán)),   即首先遍歷 A,將A表中的每一條記錄與 B表進(jìn)行連接比較,如果滿足A.di=B.id,則返回記錄;
2. Merge join(合并連接), 即首先對(duì)A,B表進(jìn)行排序,然后同時(shí)遍歷A和B表,進(jìn)行A.id=B.id的驗(yàn)證,直到遍歷到A和B表結(jié)束;
3. Hash join(哈希連接), 即首先對(duì)A表所有記錄的id進(jìn)行hash計(jì)算,最終形成一個(gè)hash表,然后join時(shí),遍歷B表,對(duì)B表每條記錄的id進(jìn)行hash運(yùn)算,然后在A的Hash表中驗(yàn)證是否一致,最后得出結(jié)果。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容