理解sql server的sql查询计划--

理解sql server的sql查询计划--

ID:9732568

大小:74.50 KB

页数:13页

时间:2018-05-06

理解sql server的sql查询计划--_第1页
理解sql server的sql查询计划--_第2页
理解sql server的sql查询计划--_第3页
理解sql server的sql查询计划--_第4页
理解sql server的sql查询计划--_第5页
资源描述:

《理解sql server的sql查询计划--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、理解SQLServer的SQL查询计划>>  本文通过详细分析一个示例来说明SEEK、SCAN等操作的用法和效果,供大家参考!  入门指南  让我们以一个简单的例子帮助你理解如何阅读查询计划,可以通过发出SETSHObig_salesSELECTord_dateFROMbig_salesStmtText-------------------------------------------------------------------------

2、--ClusteredIndexScan(OBJECT:([pubs].[dbo

3、].[big_sales].[UPKCL_big_sales]))  上面的查询展示返回的数据量非常不同,所以小结果集(ord_date)的查询比其它查询运行更快,这只是因为存在大量底层的I/O。然而,这两个查询计划实际上是一样的。你可以通过使用其它索引提高性能。例如,在title_id列上有一个非聚集索引存在:SELECTtitle_idFROMbig_salesStmtText------------------------------------------------------------------

4、--Index

5、Scan(OBJECT:([pubs].[dbo].[big_sales].[ndx_sales_ttlID]))  上面的查询的执行时间与SELECT*查询相比非常小,这是因为可以从非聚集索引即可得到所有结果。该类查询被称为coveringquery(覆盖查询),因为全部结果集被一个非聚集索引所覆盖。  SEEK与SCAN  第一件事是你需要在查询计划中区别SEEK和SCAN操作的不同。  注意:一个简单但非常有用的规则是SEEK操作是有效率的,而SCAN操作即使不是非常差,其效率也不是很好。SEEK操作是直接的,或者至少是

6、快速的,而SCAN操作需要对整个对象进行读取(表,聚集索引或非聚集索引)。因此,SCAN操作通常比SEEK要消耗更多的资源。如果你的查询计划仅是扫描操作,你就应该考虑调整你的查询了。  big_salestText-----------------------------------------------------------------------------

7、--ClusteredIndexSeek(OBJECT:([pubs].[dbo].[big_sales].[UPKCL_big_sales])),SEEK:([

8、big_sales].[stor_id]={1}ORDEREDFORbig_salestText------------------------------------------------------------------------------

9、-ClusteredIndexSeek(OBJECT:([pubs].[dbo].[big_sales].[UPKCL_big_sales]),SEEK:([big_sales].[stor_id]>=7131)ORDERFORbig_salesWherestor_idb

10、ettText------------------------------------------------------------------------------

11、-ClusteredIndexSeek(OBJECT:([pubs].[dbo].[big_sales].[UPKCL_big_sales]),SEEK:([big_sales].[stor_id]>=7066and([big_sales].[stor_id]<=7131)ORDERFORWARD)  这个看起来也一样。只是查找谓词改变了。因为查

12、找是非常快的,所以这个查询是相当好的。  SEEK和SCAN也可包含Where谓词。在这种情况下,这个谓词告诉你Where子句从结果集中过滤出哪些记录。因为它是作为SEEK或SCAN的一个组件执行的,Where子句通常既不损害也不提高这个操作本身的性能。Whe1234下一页>>>>这篇文章来自..,。re子句会帮助查询优化器找到可能有最佳性能的索引。  查询优化的一个重要部分是要确定是否在某个索引上执行SEEK操作,如果是这样,就找到了具有最佳性能的索引。大部分情况下,查询引擎能出色地查找到存在的索引。但是,目前有三种涉及到索

13、引的常见问题:  ◆数据库设计师,通常是应用开发者,在表中没有建立任何索引。  ◆数据库设计师通常猜测不到常用的查询或事务类型,所以建立在表上的索引或主键往往效率不高。  ◆当索引表被创建时,即使数据库设计师猜测较准,但事务负载随着时间将发生改变,使得这些索引效率变差。  如

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

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

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