- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
理解SQL Server的SQL查询计划--.doc
理解SQL Server的SQL查询计划
本文通过详细分析一个示例来说明SEEK、SCAN等操作的用法和效果,供大家参考!
入门指南
让我们以一个简单的例子帮助你理解如何阅读查询计划,可以通过发出SET SHO big_sales
SELECT ord_date
FROM big_sales
StmtText
-------------------------------------------------------------------------
|--ClusteredIndexScan(OBJECT:([pubs].[dbo].[big_sales].[UPKCL_big_sales])) 上面的查询展示返回的数据量非常不同,所以小结果集(ord_date)的查询比其它查询运行更快,这只是因为存在大量底层的I/O。然而,这两个查询计划实际上是一样的。你可以通过使用其它索引提高性能。例如,在title_id列上有一个非聚集索引存在:
SELECT title_id
FROM big_sales
StmtText
------------------------------------------------------------------
|--Index Scan(OBJECT:([pubs].[dbo].[big_sales].[ndx_sales_ttlID])) 上面的查询的执行时间与SELECT *查询相比非常小,这是因为可以从非聚集索引即可得到所有结果。该类查询被称为covering query(覆盖查询),因为全部结果集被一个非聚集索引所覆盖。
SEEK与SCAN
第一件事是你需要在查询计划中区别SEEK和SCAN操作的不同。
注意:一个简单但非常有用的规则是SEEK操作是有效率的,而SCAN操作即使不是非常差,其效率也不是很好。SEEK操作是直接的,或者至少是快速的,而SCAN操作需要对整个对象进行读取(表,聚集索引或非聚集索引)。因此,SCAN操作通常比SEEK要消耗更多的资源。如果你的查询计划仅是扫描操作,你就应该考虑调整你的查询了。
big_sales
tText
-----------------------------------------------------------------------------|--Clustered
Index Seek(OBJECT: ([pubs].[dbo].[big_sales].[UPKCL_big_sales])),
SEEK: ([big_sales].[stor_id]={1} ORDERED FOR big_sales
tText
------------------------------------------------------------------------------|-Clustered
Index Seek(OBJECT: ([pubs].[dbo].[big_sales].[UPKCL_big_sales] ),
SEEK: ([big_sales].[stor_id]gt;=7131) ORDER FOR big_sales
Where stor_id bettText
------------------------------------------------------------------------------|-Clustered
Index Seek(OBJECT: ([pubs].[dbo].[big_sales].[UPKCL_big_sales] ),
SEEK:([big_sales].[stor_id]gt;=7066 and ([big_sales].[stor_id]lt;=7131) ORDER FORWARD) 这个看起来也一样。只是查找谓词改变了。因为查找是非常快的,所以这个查询是相当好的。
SEEK和SCAN也可包含Where谓词。在这种情况下,这个谓词告诉你Where子句从结果集中过滤出哪些记录。因为它是作为SEEK或SCAN的一个组件执行的, Where子句通常既不损害也不提高这个操作本身的性能。Whe
1234下一页 这篇文章来自..,。re子句会帮助查询优化器找到可能有最佳性能的索引。
查询优化的一个重要部分是要确定是否在某个索引上执行SEEK操作,如果是这样,就找到了具有最佳性能的索引。大部分情况下,查询引擎能出色地查找到存在的索引。但是,目前有三种涉及到索引的常见问题:
◆数据库设计师,通常是应用开发者,在表中没有建立任何索引。
◆数据库设计师通常猜测不到常用的查
您可能关注的文档
- 犬骨骼肌成肌细胞体外分离、纯化及培养方法改良探索.doc
- 犯罪人—被害人和解的制度设计与司法践行.doc
- 犯罪化原则与我国的严打政策.doc
- 犯罪客体不要说之检讨——从比较法的视角考察.doc
- 狠抓医院内涵建设 打造百姓放心医院品牌.doc
- 独特型TCR Vα1pIRESTCR Vβ8表达载体构建及体外表达.doc
- 独特的蒙台梭利教育理念--.doc
- 独立董事独立性研究(上).doc
- 独立董事独立性研究(下).doc
- 猕猴桃抗肿瘤免疫药理研究进展.doc
- 金融产品2024年投资策略报告:积极适应市场风格,行为金融+机器学习新发现.pdf
- 交运物流2024年度投资策略:转型十字路,峰回路又转(2023120317).pdf
- 建材行业2024年投资策略报告:板块持续磨底,重点关注需求侧复苏.pdf
- 宏观2024年投资策略报告:复苏之路.pdf
- 光储氢2024年投资策略报告:复苏在春季,需求的非线性增长曙光初现.pdf
- 公用环保2024年投资策略报告:电改持续推进,火电盈利稳定性有望进一步提升.pdf
- 房地产2024年投资策略报告:聚焦三大工程,静待需求修复.pdf
- 保险2024年投资策略报告:资产负债匹配穿越利率周期.pdf
- 政策研究2024年宏观政策与经济形势展望:共识与分歧.pdf
- 有色金属行业2024年投资策略报告:新旧需求共振&工业原料受限,构筑有色大海星辰.pdf
文档评论(0)