数据库多表查询之 where INNER JOIN
生活随笔
收集整理的這篇文章主要介紹了
数据库多表查询之 where INNER JOIN
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在多表查詢中,一些SQL開發人員更喜歡使用WHERE來做join,比如:
SELECT a.ID, b.Name, b.Date FROM Customers a, Sales b WHERE a.ID = b.ID;缺點:在上面語句中,實際上是創建了兩張表的笛卡爾積,所有可能的組合都會被創建出來。在笛卡爾連接中,在上面的例子中,如果有1000顧客和1000條銷售記錄,這個查詢會先產生1000000個結果,然后通過正確的 ID過濾出1000條記錄。 這是一種低效利用數據庫資源,數據庫多做100倍的工作。 在大型數據庫中,笛卡爾連接是一個大問題,對兩個大表的笛卡爾積會創建數10億或萬億的記錄。
為了避免創建笛卡爾積,應該使用INNER JOIN :
SELECT a.ID, b.Name, b.Date FROM Customers a INNER JOIN Sales 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、示意圖:
總結
以上是生活随笔為你收集整理的数据库多表查询之 where INNER JOIN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【TensorFlow】——合并与分割(
- 下一篇: 阿里云怎么进入mysql_阿里云进入my