M1 INNER JOIN M2 ON M2='2' AND M1.ID=M2.ID
M1 INNER JOIN M2 ON M1.ID=M2.ID AND M2='2'
这两条查询语句在性能上有区别吗?
没有
有点区别,不过一般看不出来,区别在于前面条件为假应该就不会比较and后面的,所以数据量特别大的时候应该才会体现,一般用不到
你看看执行计划是不是一样呗
有区别 语句一的性能更好一些 因为语句一and之前的都不成立 那么都不用执行and之后的代码 但是ON M2='2'比 M1.ID=M2.ID的性能高一些
沒有區別.
有区别,SQL的执行顺序是从后向前执行。比如,“在全世界范围找处男” 你的执行顺序肯定是 (锁定男人->再锁定“处”)如果你先找“处”再排除其中的男人,效率肯定是低的。 如果是ORACLE 在9I 之前是需要手动控制的,之后的版本中就无需控制,系统会自动进行资源消耗的比较。SQL server 应该也有同样的机制。也可以说没区别。希望LZ从本质上理解这些概念。当你有一定的积累之后,在根本上分析问题就游刃有余了。
如果有区别,哪天语句性能好些呢?我用SQLSERVER 2005的
SET STATISTICS TIME ON
用上面的语句可以查看 sql 性能占用,自己对比下就知道了