本文出处:http://www.cnblogs.com/wy123/p/6913055.html 执行计划的缓存与重用 在通过SQL Profile观察一个SQL语句或者存储过程是否有可用的缓存执行计划的时候,通过SP:CacheMiss和SP:CacheHit事件可以说明是否发生了编译/重编译和是否重用了缓存的执行计划,但是对于SP:CacheMiss这一细节,还是存在不少理解错误的情况的,本文通过一个简单的例子来解释说明SP:CacheMiss所表达的真实含义. 简单建个测试表,来测试使用…
  刚开始用SQL Server的时候,我没有用显示执行计划来对查询进行分析.我曾经一直认为我递交的SQL查询都是最优的,而忽略了查询性能究竟如何,从而对“执行计划”重视不够.在我职业初期,我只要能获取数据就很开心,而不去考虑数据是如何返回的,“执行计划”对我的查询作了什么工作.我以为SQL Server会自己去处理查询的性能问题的.作为一个刚进入IT行业或者刚学到新技术的软件工程师,在编写代码前不太可能有时间去学习其实必须掌握的知识.也许这是因为IT行业竞争太激烈的缘故. 随着时间的流逝,数据…
在SQL Server中,选中一段SQL按Ctrl+L,就可以查看它的执行计划. 上面是一个执行计划的实例,在SQL Server中,执行计划是从右往左看的. SQL Server中,查找数据的方式有以下几种: 1,表扫描(Table Scan):对于没有聚集索引(主键索引)的表进行全表扫描,效率最低: 2,聚集索引扫描:对于有聚集索引的表进行全表扫描,效率也较低: 3,索引扫描:对于有索引的列进行扫描,属于先滤出部分数据再进行扫描,较之全表扫描的效率略高一些: 4,索引查找:根据索引列,定位记…
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现. 1.管理->SQL Server代理->作业(按鼠标右键)->新建作业-> 2.新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->描述[填写本次工…
执行计划对性能影响甚大. 系统是怎么得出一个号的执行计划的?主要是依赖于准确的统计信息.统计信息准确的前提下,执行语句重用性高,可避免频繁编译,这也有助于提高性能. 但如果怀疑统计信息不够准确,可以强制待执行的SQL语句编译.主要方法为清除内存中的执行计划,运用编译语句等. 为何索引重建后查询速度变快? 1.消除了数据碎片 2.更新了统计信息.…
student表,id,name,address id上建立聚集索引,Name建索引,address无索引.1. [Table Scan]:遍历整个表,查找所有匹配的记录行.这个操作将会一行一行的检查,当然,效率也是最差的. 以无索引字段为条件,按存放顺序一个个查,同4where address='123' 2. [Index Scan]:根据索引,从表中过滤出来一部分记录,再查找所有匹配的记录行,显然比第一种方式的查找范围要小,因此比[Table Scan]要快. 多重条件?有索引列,无索引列…
很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: 1.select * from table1 where name=''zhangsan'' and tID > 10000和执行select * from table1 where tID > 10000 and name=''zhangsan'' 一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索…
参考SQL技术内幕写了一段脚本,可以通过这段脚本查看执行指定SQL语句后,系统生成了哪些执行计划.使用时注意以下几点: 修改use MyTest,换成自己的数据库名字. 将 exec sp_page_test TestTable','*','id',20,100,0,'1=1'替换成要测试的SQL语句 该脚本只支持Sql Server 2005及以上版本 set nocount on; use MyTest; --这里使用你自己的数据库 dbcc freeproccache;--清空过程缓存 g…
SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅途(www.Zuowenjun.cn) --CreateDate:2015-06-02 --Function:分页获取数据 /******************/ create procedure [dbo].[sp_DataPaging] ( @selectsql nvarchar(200),-…
sql server中,如果想知道有哪些语句是执行效率不高的,应该如何查看呢?下面就将为您介绍sql server中如何查看执行效率不高的语句,供您参考.   在测量功能时,先以下命令清除sql server的缓存   dbcc freeProcCache   在点击某个按钮,执行完后,再执行下面语句,就可以知道系统运行什么Sql和多少次了,其主要慢语句是那些了;   SELECT creation_time  N'语句编译时间'         ,last_execution_time  N'…