随笔分类 -  SQL Server--执行计划

执行计划--Adhoc和Prepare
摘要:在和SQLPass讨论adhoc和Prepare时,有各自不同的观点,我来发表下我的理解,不对之处,敬请指出!Adhoc(即席查询):没有参数化的查询计划会被标记为adhoc,adhoc不能理解为该执行计划不会被重用。Prepared(预定义):查询中使用到参数的执行计划会被标记为Prepared.在后续测试中,每次测试之前需要清除执行计划:--清理执行计划DBCC FREEPROCCACHE测试语句执行结束后需要使用以下语句来查看执行计划:--查看执行计划select cp.usecounts as '使用次数',cp.cacheobjtype as '缓存类型 阅读全文

posted @ 2014-01-24 00:20 笑东风 阅读(3144) 评论(3) 推荐(3) 编辑

执行计划--在存储过程中使用SET对执行计划的影响
摘要:--如果在存储过程中定义变量,并为变量SET赋值,该变量的值无法为执行计划提供参考(即执行计划不考虑该变量),将会出现预估行数和实际行数相差过大导致执行计划不优的情况--如果在存储过程中使用SET为存储过程参数重新赋值,执行计划仍采用执行时传入的值来生成执行计划。--=======================================--准备测试数据DROP TABLE TB1GOSELECT IDENTITY(INT,1,1) AS RID,*INTO TB1FROM sys.all_columnsGOINSERT INTO TB1SELECT *FROM sys.all_colu 阅读全文

posted @ 2014-01-20 15:25 笑东风 阅读(898) 评论(0) 推荐(1) 编辑

执行计划--为查询指定查询计划
摘要:--===========================--查询语句EXEC [sys].[sp_executesql] N'SELECT COUNT(1)FROM dbo.TB1WHERE RID>@RID',N'@RID INT',@RID=10 --===========================--为该语句创建执行计划EXEC [sys].[sp_create_plan_guide]@name=N'Guide3',@type=N'SQL',@stmt=N'SELECT COUNT(1)FROM dbo 阅读全文

posted @ 2014-01-20 14:21 笑东风 阅读(405) 评论(0) 推荐(1) 编辑

执行计划--重编译
摘要:--==========================================--在生产环境中,会遇到表中某列数据分布不均匀,导致在生成执行计划--不能适应参数的变化--==========================================--解决方式:强制存储过程重编译CREATE PROCEDURE dbo.USP_GetData( @PID INT)WITH RECOMPILEASBEGINSELECT *FROM TB1WHERE PID=@PIDENDGO--==========================================--解决方式:.. 阅读全文

posted @ 2014-01-20 14:15 笑东风 阅读(269) 评论(0) 推荐(1) 编辑

执行计划--参数化设置
摘要:1>虽然可以使用“简单参数化”或“强制参数化”来优化 adhoc 查询,重用执行计划,但是仍会造成一定的性能损耗,对于重复执行的语句,还是应该将之参数化。 2>当大量只执行一次的adhoc 查询语句出现时,可以使用 optimize for ad hoc workloads 来减少计划缓存使用的内存。 阅读全文

posted @ 2014-01-20 13:48 笑东风 阅读(1356) 评论(0) 推荐(1) 编辑

执行计划--WHERE条件的先后顺序对执行计划的影响
摘要:虽然在很多情况下SQL Sever引擎能帮助我们判定 WHERE 条件后的执行顺序,但我们仍应该将选择性高(过滤数据多)的条件放置在 WHERE 语句中的前面,尤其对于复杂的SQL 语句,应仔细分析测试。 阅读全文

posted @ 2014-01-20 13:36 笑东风 阅读(9336) 评论(1) 推荐(1) 编辑

执行计划--常用的查询分析
摘要:--特定语句的最后运行时间 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT DISTINCT TOP 20 qs.last_execution_time AS LastExectionTime ,qt.text AS ParentQuery ,DB_NAME(qt.dbid) AS DatabaseName FROM sys.d... 阅读全文

posted @ 2012-10-24 17:44 笑东风 阅读(536) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示