多表查詢用 join 好嗎

2021-10-07 10:32:35 字數 697 閱讀 2283

sql連線查詢的由來:人們對20實際80年代的sql標準提出批評,認為select語句中無直接的連線或自然連線操作。sql吸收了這個意見,用較為直接的形式表示各式各樣的連線操作,這些操作可在from字句中以直接的形式指出。在書寫兩個關係的連線操作時,sql2把連線操作符分成連線型別和連線條件兩部分(如果圖1)連線型別決定了如何處理連線條件中不匹配的元祖。連線條件決定了兩個關係中哪些元祖應該匹配,以及連線結果**現哪些屬性。

圖1連線型別

連線條件

inner join(內連線)

natural(寫在連線型別的左邊)

left outer join(左外連線)

on 寫在連線型別的右邊

right outer join(右外連線)

using 寫在連線型別的右邊

full outer join(完全外連線)

sql join 連線的限制:出了sql join 連線查詢後,是方便了我們查詢。但是當資料超過千萬條時卻不能再用join了因為此時如果用join的話速度會很慢。這就是好多程式設計師再優化程式時經常做的一部。去查詢有沒有過萬的表去join過萬資料的表。然後把它拆開。這樣會明顯增加速度。

還有為了增加查詢速度在經常用到的字段,還有where後面經常用的也可以加一些非聚集索引等來加快查詢的速度。

總之大資料避免用join連線查詢(因為用join的時候庫在做笛卡爾基如果資料量過大會很慢的,甚至卡死)。

多表Join 查詢

語法格式 from 表1 inner join 表2 on 表1.欄位號 表2.欄位號 inner join 表3 on 表1.欄位號 表3.欄位號 inner join 表4 on member.欄位號 表4.欄位號 inner join 表x on member.欄位號 表x.欄位號,只要套用該...

mysql多表查詢方法(join)

表a記錄如下 aid anum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表b記錄如下 bid bname 1 2006032401 2 2006032402 3 2006032403 4 2006032404 8 200...

ThinkPHP多表查詢之join方法

現在的目的是要把article category中的name欄位匯入到article中去 表yz article如下 表yz article category如下 貼上其他幾個案例裡面的 data m groups g field g.id,g.group name,e.uid join left ...