Ash*_*ary 8 sql select product cartesian
可能重复:
内部联接vs其中
今天我和我的项目经理就Cartesian产品进行了辩论.他说'自然连接'比使用'select from where'要好得多,因为后者会导致db引擎在内部执行笛卡尔积,但前者使用另一种方法来阻止这种情况.据我所知,自然连接语法在性能或含义方面与"从哪里选择"没有任何不同,我的意思是你可以根据自己的喜好使用.
SELECT * FROM table1,table2 WHERE table1.id=table2.id
SELECT * FROM table1 NATURAL JOIN table2
Run Code Online (Sandbox Code Playgroud)
请详细说明导致笛卡尔积的第一个查询,但第二个查询更加智能
gbn*_*gbn 14
正确的方法应该是明确的过滤器和连接分开
SELECT * FROM table1 JOIN table2 ON table1.id = table2.id
Run Code Online (Sandbox Code Playgroud)
自然联合可能很容易和"干净",但更可能完全不可预测......
编辑,2012年5月.
复制的接受答案实际上并不回答NATURAL JOIN.
这些链接进一步详细讨论.
TL;博士
性能不是问题:但是您的查询应该是可靠且可预测的,而NATURAL JOIN当然不是.
"在WHERE中加入"又名隐含的JOIN又称你所谓的"笛卡尔"也是坏的,因为这些链接(同样适用于Oracle和SQL Server)
| 归档时间: |
|
| 查看次数: |
17954 次 |
| 最近记录: |