码迷,mamicode.com
首页 > 数据库 > 详细

优化子查询sql语句为内连接

时间:2015-07-13 23:50:35      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

背景:

  希望提高查询的效率,从sql语句中频繁出现的子查询入手。

数据表如下:Student表中的CityCode对应于City表中的Code。

Student表:                      City表:

技术分享技术分享

子查询方式:

sql语句如下:

1 select * from Student 
2 where CityCode 
3 in
4 (select Code from City)

内连接方式:
sql语句如下:

1 select a.* from 
2 Student a inner join City b
3 on a.CityCode=b.Code

二者的检索结果一致,如图:

技术分享

 

对于简单检索而言,尤其是在数据量小的情况下,二者并无差异,可能会引起同学的质疑,凭什么说连接的方式比子查询的方式要好,拿不出证据,老子弄死你们。

于是,需要借助SQL Server的性能优化指标,在SQL Server查询语句之前,添加如下两行语句即可,sql语句如下:

1 set statistics time on
2 set statistics io on

然后,打开结果标签右侧的消息标签,这是内连接的消息:

技术分享

这是子查询的消息:

技术分享

注意在子查询中City表逻辑读取了8次,而连接中只有1次。不要在意时间,因为数据量较小,所以子查询的时候更快一些,等数据量上去,你就懂了。

优化子查询sql语句为内连接

标签:

原文地址:http://www.cnblogs.com/SharpL/p/4644247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!