- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL执行效率分析.doc
很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:? select * from table1 where name=zhangsan and tID 10000? 和执行:? select * from table1 where tID 10000 and name=zhangsan? 一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那么后一句仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全表中查找看有几个name=zhangsan的,而后再根据限制条件条件tID10000来提出查询结果。? 事实上,这样的担心是不必要的。SQL SERVER中有一个“查询分析优化器”,它可以计算出where子句中的搜索条件并确定哪个索引能缩小表扫描的搜索空间,也就是说,它能实现自动优化。? 虽然查询优化器可以根据where子句自动的进行查询优化,但大家仍然有必要了解一下“查询优化器”的工作原理,如非这样,有时查询优化器就会不按照您的本意进行快速查询。? 在查询分析阶段,查询优化器查看查询的每个阶段并决定限制需要扫描的数据量是否有用。如果一个阶段可以被用作一个扫描参数(SARG),那么就称之为可优化的,并且可以利用索引快速获得所需数据。? SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接。形式如下:? 列名 操作符 常数 或 变量? 或? 常数 或 变量 操作符列名? 列名可以出现在操作符的一边,而常数或变量出现在操作符的另一边。如:? Name=’张三’? 价格5000? 5000价格? Name=’张三’ and 价格5000? 如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是SQL SERVER必须对每一行都判断它是否满足WHERE子句中的所有条件。所以一个索引对于不满足SARG形式的表达式来说是无用的。? 介绍完SARG后,我们来总结一下使用SARG以及在实践中遇到的和某些资料上结论不同的经验:? 1、Like语句是否属于SARG取决于所使用的通配符的类型 如:name like ‘张%’ ,这就属于SARG? 而:name like ‘%张’ ,就不属于SARG。? 原因是通配符%在字符串的开使得索引无法使用。? 2、or 会引起全表扫描 Name=’张三’ and 价格5000 符号SARG,而:Name=’张三’ or 价格5000 则不符合SARG。使用or会引起全表扫描。? 3、非操作符、函数引起的不满足SARG形式的语句 不满足SARG形式的语句最典型的情况就是包括非操作符的语句,如:NOT、!=、、!、!、NOT EXISTS、NOT IN、NOT LIKE等,另外还有函数。下面就是几个不满足SARG形式的例子:? ABS(价格)5000? Name like ‘%三’? 有些表达式,如:? WHERE 价格*25000? SQL SERVER也会认为是SARG,SQL SERVER会将此式转化为:WHERE 价格2500/2但我们不推荐这样使用,因为有时SQL SERVER不能保证这种转化与原始表达式是完全等价的。? 4、IN 的作用相当与OR 语句:? Select * from table1 where tid in (2,3)? 和? Select * from table1 where tid=2 or tid=3? 是一样的,都会引起全表扫描,如果tid上有索引,其索引也会失效。? 5、尽量少用NOT 6、exists 和 in 的执行效率是一样的 很多资料上都显示说,exists要比in的执行效率要高,同时应尽可能的用not exists来代替not in。但事实上,我试验了一下,发现二者无论是前面带不带not,二者之间的执行效率都是一样的。因为涉及子查询,我们试验这次用SQL SERVER自带的pubs数据库。运行前我们可以把SQL SERVER的statistics I/O状态打开。? (1)select title,price from titles where title_id in (select title_id from sales where qty30)? 该句的执行结果为:? 表 sales。扫描计数 18,逻辑读 56 次,物理读 0 次,预读 0 次。? 表 titles。扫描计数 1
您可能关注的文档
- (人教版)五年级数学下册《长方体和正方体》练习.doc
- (人教版)六年级下册英语课文翻译.doc
- (人教版)六年级数学上册课件_利息.ppt
- (人教版)四年级数学上册期中试卷.doc
- (北师大版)一年级下册单元集备.doc
- (研究生英语综合教程上)熊海虹版课后练习答案.doc
- (苏教版)生物七下学案(知识提纲).doc
- (青岛版)四年级数学下册期中复习题及答案.doc
- ABF导购手册.doc
- Adxtyka计算机统考试题.doc
- Robinhood Markets-HOOD.US市场前景及投资研究报告-加密复苏受益,政策东风,牛市周期.pdf
- 专业服务行业市场前景及投资研究报告:人服行业AI,国内人服龙头AI+发展前景.pdf
- 机械设备行业市场前景及投资研究报告:谐波减速器需求,国内企业拥抱国产化机遇.pdf
- 集智股份-市场前景及投资研究报告:平衡机主业,乘势机器人,水声业务,第二增长曲线.pdf
- 小商品城-市场前景及投资研究报告:天时地利人和,再创辉煌.pdf
- 匠心家居-市场前景及投资研究报告:创新驱动,产品为基,自主品牌出海成长可期.pdf
- GE航天航空-市场前景及投资研究报告-飞机交付催生航空发动机MRO周期.pdf
- 钢铁行业2025年投资策略分析报告:内卷严格限产.pdf
- 互联网传媒行业市场前景及投资研究报告:MiniMax,Hailuo 02,中国游戏市场同环比增长.pdf
- 非银金融行业2025年市场前景及投资研究报告:贸易摩擦背景,市场韧性增强.pdf
最近下载
- 国开02047_政府经济学-机考复习资料.docx VIP
- 特殊教育:培智部五年级生活数学B卷.docx
- OBE理念指导下的软件实训课教学改革实践探索.docx VIP
- 安检现场处置单位广州民航王超58课件.pptx VIP
- (2025春新版本)七年级下册道德与法治知识点总结.pdf VIP
- 微软-2025-该年前沿企业诞生(英译中).pdf
- 2024年华为认证HCIE存储H13-629必备考试题库大全(含答案).docx VIP
- 房地产管理新加坡房地产经济.docx VIP
- T_CERDS 3-2022 企业ESG评价体系.docx VIP
- 2024年公安机关人员基础知识考试题库及答案 (新版).docx
文档评论(0)