SQL中的連線查詢及其優化原則

2021-09-08 18:14:33 字數 798 閱讀 2970

連線查詢是sql的主要任務,只有很好的掌握了連線查詢及其優化方法才算是掌握了sql的精髓所在。最近在面試中遇到了有關連線查詢的問題,感覺回答的不是很好,總結一下。

具體示例請參考:

總結:

連線查詢原理與**優化:假如要對table1和table2兩個表進行連線查詢,則dbms首先會在table1中找到第乙個元組,然後從頭開始掃瞄table2表,逐一查詢與table1第乙個元組相對應的table2的元組,找到後就將table1的第乙個元組和table2的第二個元組拼接起來,如果將table2掃瞄了一遍也沒有找到,則開始匹配table1的第二個元組。直到table1也掃瞄完畢。返回查詢到的連線表。通過連線查詢的原理可以清楚,兩個表的連線查詢就是乙個兩層迴圈,如果table1的記錄數為m,table2的記錄數為n的話那麼進行一次連線查詢的時間複雜度應該是o(m*n)。可見連線查詢是非常耗時的,如果表的記錄數非常龐大查詢效率就會變的很低。所以在寫sql語句特別是複雜的連線查詢就要在**層面對查詢進行優化,優化的原則是把連線操作盡量放在最後,盡可能的把單錶查詢、選擇操作放在前面這樣就會在一定程度上減少連線查詢表的記錄數,提高執行效率。dbms本身也會對sql語句進行優化。

inner join=join 可以理解為自然連線,是最常用的一種連線查詢,返回匹配的行(至少有乙個匹配才會返回)。

out join一般有left out join和right out join是和inner join相對的一種連線查詢,其中left out join是指左邊的表全部返回如果有對應的右邊表的行則連線起來返回,否則設定為null。而right out join則相反。參考上面連線中的具體示例就很容易明白。

sql中的連線查詢

create table 產品 產品編號 char 9 not null,產品名稱 varchar 20 not null go create table 產品銷量 產品編號 char 9 not null,銷量 int go insert into 產品 values 001 顯示器 insert...

SQL中的連線查詢

1 整體說明 1 所謂連線,按字面理解就是將表拼在一起,當做一張表使用 2 內連線 顧名思義,也就是兩張表的重疊部分 即青色部分 都滿足才行 3 左外連線 也就是將左邊的表也連線起來,結果就是所有左邊的資料加上滿足重疊部分條件的右邊部分 4 右外連線 右邊所有表的資料,加上滿足重疊部分條件的左邊的資...

SQL中的連線查詢

sql有sql92與sql99兩個重要的標準版本,兩個版本中的連線查詢方式不太相同。在平常寫的過程中容易混淆。笛卡爾積 from a,b 等同於 from a cross join b等值連線 from a,b where a.f1 b.f1 等同於 from a join b on a.f1 b....