回答
它將依賴於DBMS,並且在某種程度上依賴於所加入的表,並且差異通常不會被測量。使用INNER JOIN,將會有兩個公共列的副本;使用NATURAL JOIN,將只有一個公共列的副本。
如果必須將中間結果寫入磁盤或進行排序,則會有更多要管理的數據,並且通過客戶端 - 服務器連接返回客戶端的數據會稍多一些,因此INNER JOIN可能會比NATURAL JOIN略長一些。如果公共列足夠大 - 例如長字符字段 - 這種大小差異可能會很大。
準備兩種類型的連接的時間差異是完全可以忽略的。兩者都必須讀取參與連接的兩個表中的所有列的信息,並且處理該數據的過程基本相似。
在執行過程中,複製數據以形成中間結果對於NATURAL JOIN可能稍微複雜一點 - 因爲您不僅僅需要獲取每一行的副本 - 但是您不一定需要完整副本INNER JOIN的每一行也是如此,所以差異可以忽略不計。而且,與之前一樣,NATURAL JOIN的數據總體上要複製的數據略少,所以還有一點小優勢。
因此,總體而言,NATURAL JOIN可能比INNER JOIN稍快,但差異仍可能可以忽略不計。
在特殊情況下,自然連接可以像內連接一樣快。
我無法想象找到可以支持該假設的公共列是非常昂貴的。
更可能取決於設計中的自然連接不需要鍵(稱爲「索引」)。雖然你可以做沒有真正的密鑰的內部連接,但它非常罕見和「明顯」錯誤 – stefan 2011-01-30 08:28:47
- 1. mysql內部加入速度效率
- 2. MySQL內部加入內部加入?
- 3. SQL內部加入,然後左加入3表
- 4. MySQL查詢速度加入
- 5. 內部加入速度問題(鏈接服務器列)
- 6. mysql - MyISAM或InnoDB - 加入速度與查找速度
- 7. 左加入VS內部加入條件
- 8. 內部加入NamedQuery?
- 9. Mysql內部加入
- 10. SQLite內部加入
- 11. MongoDB內部加入?
- 12. 內部加入DataTables
- 13. 內部加入mysql
- 14. 內部加入PHP
- 15. MapReduce內部加入?
- 16. mysql 7 +加入桌面,如何加速?
- 17. yii2內部加入身份界面
- 18. 如何與左內加入加入
- 19. 在MYSQL中加速自我加入
- 20. 內加入與NetTiers
- 21. 內加入與LINQ
- 22. Apache Spark SQL:自動內部加入?
- 23. 與內部SQL更新加入,其中
- 24. Laravel加入與在內部不工作
- 25. 問題與內部標準加入
- 26. MYSQL與內部查詢結果加入
- 27. 內部加入與codeigniter複製結果
- 28. 錯誤與內部查詢加入
- 29. 方向(My)SQL左/右/內部加入
- 30. 加入功能方面與蟒蛇
以及更重要的一點,它們的區別與查看錶結構信息無關。 – siride 2011-01-30 06:44:47