教你如何看懂sqlserver查询计划

教你如何看懂sqlserver查询计划

ID:31765859

大小:53.90 KB

页数:3页

时间:2019-01-17

教你如何看懂sqlserver查询计划_第1页
教你如何看懂sqlserver查询计划_第2页
教你如何看懂sqlserver查询计划_第3页
资源描述:

《教你如何看懂sqlserver查询计划》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、教你如何看懂SQLServer查询计划与数据库交互的基本语言是sql,数据库每次解析和执行sql语句多需要执行很多步骤。以sqlserver为例,当数据库收到一条查询语句时,语法分析器会扫描sql语句并将其分成逻辑单元(如关键词、表达式、运算符和标识符)并生成查询树,最后查询优化器将分析所有可以访问数据库的源表的方法,从中选择一组返回结果集最快且消耗资源较少的步骤。查询树随即进行更新以准确记录这个步骤,接着交由数据库引擎开始执行,然后将查询结果返回给用户。可见数据库引擎每次执行sql命令都会有很大的开销,如果提交的sql质量不高甚至有逻辑错误就会造成无谓的开销和时间浪费。为了避免

2、这种情况,在使用sq1命令时应注意以下原则:1、字段提取要按照'‘需多少、提多少”的原则,避免“select*”,尽量使用“select字段1,字段2,字段3...”。实践证明,每少提取一个字段,数据库提取速度就会有相应的提升。提升的速度还要由你舍弃的字段大小来决定。2、尽量使用exists代替selectcount(*)来判断是否存在记录。优化器优化exists谓词时支持短路功能。只要找到一行,不需要再扫描其他行就可以确定该表是否包涵行了。count函数只有在统计表中所有行的行数时使用。3、尽量使用(not)exists代替(not)in操作,in的sql性能总是比较低的。71

3、234567--语句selectdname,deptnofromdeptwheredeptnonotin(selectdeptnofromenipwheredept.deptno=emo.deptno)一一语句selectdname,deptnofromdeptwherenotexists(selectdeptnofTomempwheredept.deptno=emo.deptno)4、尽量使用notin,可以用1eftouterjoin代替它。5、尽量不要使用or,使用or会引起全表扫描,将大大降低查询效率6、注意where子句的写法,必须考虑语句顺序,应该根据索引顺序、范围大

4、小来确定条件子句的前后顺序,尽可能地让字段顺序与索引顺序一致,范围从大到小。7、尽量使用"gt;=J不用使用”gt;"8、在编写sql语句之前了解表的索引结构。有效地利用索引能够避免不必要的全表扫描,缩短查询时间。应该避免在where子句中使用isnull>It;gt;、!二、not>notexist、notin>notlike等命令,他们通常会引起全表扫描导致索引无效。9、在where子句中,任何对列的操作(函数、计算等)讲导致索引失效,这些操作应该尽可能地移至等号右边,如wheresubstring(id,1,1)='a应该写成whereidlike,a%';whereres

5、ult*10gt;30应该写成whereresultgt;30;对sql命令进行优化的基本原则是尽量减少类型转换和计算,充分利用表索引,减少全表扫描的次数。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。