欢迎来到天天文库
浏览记录
ID:29740347
大小:26.64 KB
页数:22页
时间:2018-12-23
《sql,server,清除执行计划》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划sql,server,清除执行计划 【如何使用SQLServer执行计划】 【看懂SQLServer执行计划】 【SQLServer执行计划各个动作含义】 【理解SQLServer执行计划的意思】 要理解执行计划,怎么也得先理解,那各种各样的名词吧。鉴于自己还不是很了解。本文打算作为只写懂的,不懂的懂了才写。 在开头要先说明,第一次看执行计划要注意,SQLServer的执行
2、计划是从右向左看的。名词解析: 扫描:逐行遍历数据。 先建立一张表,并给大家看看大概是什么样子的。 CREATETABLEPerson( IdintIDENTITY(1,1)NOTNULL, Namenvarchar(50)NULL, AgeintNULL, HeightintNULL, Areanvarchar(50)NULL, MarryHistorynvarchar(10)NULL, EducationalBackgroundnvarchar(10)NULL, Add
3、ressnvarchar(50)NULL,目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 InSiteIdintNULL )ON[PRIMARY] 表中的数据14万左右,大概类似下面这样: 此表,暂时没有任何索引。 一、数据访问操作 1、表扫描 表扫描:发生于堆表,并且没有可用的索引可用时,会
4、发生表扫描,表示整个表扫描一次。现在,我们来对此表执行一条简单的查询语句: SELECT*FromPersonWHEREName='公子' 查看执行计划如下: 表扫描,顾名思义就是整张表扫描,找到你所需要的数据了。 2、聚集索引扫描 聚集索引扫描:发生于聚集表,也相当于全表扫描操作,但在针对聚集列的条件如(WHEREId> 10)等操作时,效率会较好。 下面我们在Id列来对此表加上一个聚集索引 CREATECLUSTEREDINDEXIX_IdONPerson(Id) 再次执行
5、同样的查询语句: SELECT*FromPersonWHEREName='公子' 执行计划如下:目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 为什么建的聚集索引在Id列,会对扫描有影响呢?更何况与Name条件也没关系啊? 其实,你加了聚集索引之后,表就由堆表变成了聚集表。我们知道聚集表的数据存在于
6、聚集索引的叶级节点。因此,聚集扫描与表扫描其实差别不大,要说差别大,也得看where条件里是什么,以后返回的数据。就本条SQL语句而言,效率差别并不大。 可以看看I/O统计信息: 表扫描: 聚集索引扫描: 此处超出本文范畴了,效率不在本文考虑范围内,本文只考虑的是,各种扫描的区别,以及为何会产生。 3、聚集索引查找 聚集索引查找:扫描聚集索引中特定范围的行。 看执行以下SQL语句: SELECT*FROMPersonWHEREId='73164' 执行计划如下: 4、索引扫描
7、 索引扫描:整体扫描非聚集索引。 下面我们来添加一个聚集索引,并执行一条查询语句: CREATENONCLUSTEREDINDEXIX_NameONPerson(Name)--创建非聚集索引目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 SELECTNameFROMPerson 查看执行计划如下:
8、 为什么此处会选择索引扫描(非聚集索引)呢?因为此非聚集索引能够覆盖所需要的数据。如果非聚集索引不能覆盖呢?例如,我们将SELECT改为SELECT*再来看看。 好明显,返回结果所包括的记录太多,用非聚集索引反而不合算。因此使用了聚集索引。如果此时我们删除聚集索引,再执行SELECT*看看。 DROPINDEX_Id 而此时没有聚集索引,所以只有使用表扫描。5、书签查找 前面关于索引的学习我们已经知道,当在非聚集索引中并非覆盖和包含所需全部的列时,SQLServer会选择,直接进行聚集
此文档下载收益归作者所有