看你知道不知道之-你注意Where子句的次序了吗?

这个系列越来越多的是和SQL语句相关的问题了,因为这段时间工作和这个有关,呵呵,不管那么多了,反正,都是和开发相关的问题,就继续吧。

我们通常不太注意SQL语句中Where子句的次序问题,但是这个次序往往会影响整个SQL语句的执行性能,举个例子吧。

比如有一个表有3个列,分别是班级、学号、姓名。

表中的数据共100条,其中1班50人,学号从1到50,二班50人,学号从1到50。

那么现在的任务是在表中找到1班学号为10的学生,查询语句就有两种写法。

1:Select 姓名 From 学生表 Where 班级=1 And 学号=10

2:Select 姓名 From 学生表 Where 学号=10 And 班级=1 

虽然返回的结果一样,但是这两个到底那个好呢?

衡量一个Sql语句好与坏,主要看性能,而影响Select语句的通常是Table Scan,我们来看看到底执行了几次Table Scan。

1:100+50=150,首先扫描全表找到50个1班的,然后早扫描50次找到学号为10的。

2:100+2=102,首先扫描全表找到2个10号的,然后扫描2次找到班级为1班的。

呵呵,这就说明在Where子句中应该先处理查询范围大的,然后处理查询范围小的,就像开车下坡是越来越快的。

当然这个也并不绝对,因为如果优化了索引,Table Scan就会减轻,并根据索引进行Where子句的优化,但是无论是否索引,我们都应该养成这个好习惯,难道不是吗?
 

posted on 2006-02-16 08:12 Duiker 阅读(395) 评论(2)  编辑 收藏 网摘 所属分类: 技术看你知道不知道

评论

#1楼  2006-03-28 10:30 vansoft [未注册用户]

根據我有限的知識,
解析器會自己優化。
  回复  引用    

#2楼  2007-08-09 10:17 kanglingv [未注册用户]

不错!加油!
  回复  引用    


发表评论



姓名 [登录] [注册] 
主页
Email (仅博主可见) 
验证码 *  验证码看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论   新用户注册   返回页首      

导航: 网站首页 社区 新闻 博问 闪存 网摘 招聘 .NET频道 知识库 找找看 Google站内搜索



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务

相关文章:

相关链接:
 

导航

公告


效率狂,质量狂,简简单单,享受生活,让代码充满阳光,让使用者感到快乐,把软件开发看作是一种沟通游戏。

message


饭否

bookmark



搜索

 

最新随笔

最新评论