聯(lián)合的類型分為 INNER JOIN 內(nèi)部聯(lián)合,OUTER JOIN外部聯(lián)合,這兩種聯(lián)合的本質(zhì)區(qū)別在于ON子句,前者ON子句的條件必須為真,后者沒有此限制
INNER JOIN 分為
等值與不等值聯(lián)合
這種聯(lián)合的子句的條件指定一個(gè)表中的某個(gè)字段必須等于另一個(gè)表中的某個(gè)字段,這是一種最常用和最有意義的聯(lián)合
交叉聯(lián)合
這種聯(lián)合沒有ON子句,聯(lián)合中列舉的所有表中的所有記錄行都被包含在結(jié)果集中,很顯然這就是兩張表的笛卡兒積,交叉聯(lián)合不是很有用
自聯(lián)合
當(dāng)一個(gè)表聯(lián)合到它自己,而不是其它表時(shí),產(chǎn)生自聯(lián)合,自聯(lián)合的主要用途是尋找表中記錄的匹配對(duì),自聯(lián)合與子查詢一起使用時(shí)比較有意義,在使用自聯(lián)合的時(shí)候一定要為這個(gè)表或列賦予一個(gè)別名,自聯(lián)合通常非常復(fù)雜。
OUTER JOIN 分為
左外部聯(lián)合
當(dāng)聯(lián)合A,B兩表時(shí),需要其中A表的記錄始終出現(xiàn)在最終結(jié)果中可選擇使用此聯(lián)合,那么不論A表記錄中是否存在滿足ON子句條件的記錄,A表的所有記錄都將顯示
右外部聯(lián)合
此與左外部聯(lián)合正好相反,使用左還是右沒有任何規(guī)定,完全看你的愛好了
完全外部聯(lián)合
這是前兩種聯(lián)合的特征合,即聯(lián)合的所有表的記錄都顯示在最終結(jié)果中
以下示例為SQL Server 2005數(shù)據(jù)庫(kù)引擎關(guān)于聯(lián)合時(shí)所使用的查詢計(jì)劃,為SQL優(yōu)化作指導(dǎo)。
數(shù)據(jù)庫(kù)引擎主要使用嵌套循環(huán),哈西匹配,合并這三種方式處理聯(lián)合查詢,根據(jù)數(shù)據(jù)量的不同,是否有聚簇索引等輔助條件,數(shù)據(jù)庫(kù)引擎自動(dòng)評(píng)估開銷選擇,但依舊可以強(qiáng)制使用Option參數(shù)指定。
新聞熱點(diǎn)
疑難解答
圖片精選