数据库多表连接
1.在多表查詢中,一些SQL開發人員更喜歡使用WHERE來做join,比如:
SELECT A.ID AS aid,B.ID AS bid FROM A,B WHERE A.`ID` = B.ID缺點:在上面語句中,實際上是創建了兩張表的笛卡爾積,所有可能的組合都會被創建出來。在笛卡爾連接中,在上面的例子中,如果有1000顧客和1000條銷售記錄,這個查詢會先產生1000000個結果,然后通過正確的 ID過濾出1000條記錄。 這是一種低效利用數據庫資源,數據庫多做100倍的工作。 在大型數據庫中,笛卡爾連接是一個大問題,對兩個大表的笛卡爾積會創建數10億或萬億的記錄。
為了避免創建笛卡爾積,應該使用INNER JOIN :
SELECT A.ID AS aid,B.ID AS bid FROM A INNER JOIN B ON A.`ID` = B.ID優點:如上面語句,使用inner join 這樣數據庫就只產生等于ID 的1000條目標結果。增加了查詢效率。
有些數據庫系統會識別出 WHERE連接并自動轉換為 INNER JOIN。在這些數據庫系統中,WHERE 連接與INNER JOIN 就沒有性能差異。但是, INNER JOIN 是所有數據庫都能識別的,因此DBA會建議在你的環境中使用它。
INNER JOIN(內連接,或等值連接):獲取兩個表中字段匹配關系的記錄。 LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。 RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用于獲取右表所有記錄,即使左表沒有對應匹配的記錄。注意:?
1、INNER JOIN 等同于 JOIN;?
2、示意圖:?
?
作業:
?
轉載于:https://www.cnblogs.com/python-machine/p/6913966.html
總結
- 上一篇: 当我们在谈论技术时,技术的本质和价值究竟
- 下一篇: unity 4种实现动态障碍方法