两个sql语句哪个效率更高

enaking 2015-06-11 02:37:15

select * from a join b on a.aid=b.aid and a.age>20



select * from a join b on a.aid=b.aid where a.age>20




个人认为第一个效率更高,因为它是先在条件下筛选出有效数据再进行关联,而第二个是将所有的数据先关联再进行筛选,可能对内存及关联时的执行效率都会负担。只是个人想法,征求各位大哥们的意见。

...全文
283 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
miniburger 2015-06-12
  • 打赏
  • 举报
回复
select * from a join b on a.aid=b.aid where a.age>20 AGE加索引
hery2002 2015-06-11
  • 打赏
  • 举报
回复
测试:
USE AdventureWorks2012;
GO
SELECT * FROM db_owner.bigProduct A JOIN db_owner.bigProduct B ON A.ProductID = B.ProductID AND A.ListPrice <10.0

SELECT * FROM db_owner.bigProduct A JOIN db_owner.bigProduct B ON A.ProductID = B.ProductID
WHERE A.ListPrice <10.0

hery2002 2015-06-11
  • 打赏
  • 举报
回复
效率应该是一样的。 不过推荐第二种写法。
薛定谔的DBA 2015-06-11
  • 打赏
  • 举报
回复
还是按照标准写法,a.age>20 不要随便放,看楼主需要怎样的结果(虽然最终结果可能一样,但计算不一样)
还在加载中灬 2015-06-11
  • 打赏
  • 举报
回复
你这个是内连接,在SQLSERVER优化后没有区别

怎么写舒服 就怎么写吧
enaking 2015-06-11
  • 打赏
  • 举报
回复
我是想知道这两效率要是一样那我肯定会选第二种,。复杂的sql可读性高一些。。
lily123567 2015-06-11
  • 打赏
  • 举报
回复
看一看执行计划吧,通常情况下这两个语句的执行计划不会有什么区别。 查询优化器会根据统计信息自动选择它认为比较节约开销的方式执行运算,不一定会按照你指定的方式执行。
haitao 2015-06-11
  • 打赏
  • 举报
回复
如果是 left join,2个sql的结果都不一样
Cherise_huang 2015-06-11
  • 打赏
  • 举报
回复
如果说效率应该是第二个效率高吧 但是连接查询语句用的时候要慎重,方式不同,不同需求中,可能最终得出的结果会不一样,不是预期效果
还在加载中灬 2015-06-11
  • 打赏
  • 举报
回复
事实上没有区别

内连接,优化器会提前把条件过滤带进去连接

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧