首页 新闻 会员 周边

关于SQL SERVER 查询

0
悬赏园豆:10 [已关闭问题] 关闭于 2014-10-27 19:25

M1 INNER JOIN M2 ON M2='2' AND M1.ID=M2.ID
M1 INNER JOIN M2 ON M1.ID=M2.ID AND M2='2'
这两条查询语句在性能上有区别吗?

易之名的主页 易之名 | 初学一级 | 园豆:103
提问于:2014-10-21 12:54
< >
分享
所有回答(7)
0

没有

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-10-21 13:03
0

有点区别,不过一般看不出来,区别在于前面条件为假应该就不会比较and后面的,所以数据量特别大的时候应该才会体现,一般用不到

风醉 | 园豆:1197 (小虾三级) | 2014-10-21 13:47
0

你看看执行计划是不是一样呗

Yu | 园豆:12980 (专家六级) | 2014-10-21 13:58
0

有区别    语句一的性能更好一些      因为语句一and之前的都不成立  那么都不用执行and之后的代码   但是ON M2='2'比  M1.ID=M2.ID的性能高一些

馒头什么的最喜欢了 | 园豆:213 (菜鸟二级) | 2014-10-21 17:14
0

沒有區別.

会飞的金鱼 | 园豆:881 (小虾三级) | 2014-10-21 18:24
0

有区别,SQL的执行顺序是从后向前执行。比如,“在全世界范围找处男” 你的执行顺序肯定是 (锁定男人->再锁定“处”)如果你先找“处”再排除其中的男人,效率肯定是低的。 如果是ORACLE 在9I 之前是需要手动控制的,之后的版本中就无需控制,系统会自动进行资源消耗的比较。SQL server 应该也有同样的机制。也可以说没区别。希望LZ从本质上理解这些概念。当你有一定的积累之后,在根本上分析问题就游刃有余了。

CaiYongji | 园豆:1267 (小虾三级) | 2014-10-21 18:47

如果有区别,哪天语句性能好些呢?我用SQLSERVER 2005的

支持(0) 反对(0) 易之名 | 园豆:103 (初学一级) | 2014-10-21 19:43
0

 SET STATISTICS TIME ON

 用上面的语句可以查看 sql 性能占用,自己对比下就知道了

jerry128 | 园豆:31 (初学一级) | 2014-10-26 18:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册