option(recompile)

Ref:

http://www.cnblogs.com/CareySon/archive/2013/05/04/PlanCacheInSQLServerPart2.html

https://msdn.microsoft.com/zh-cn/library/ms181055(v=SQL.105).aspx

recompile后在sys.dm_exec_query_plan(s1.plan_handle)中查不到QueryPlan,这样就没有cache,so,下次执行时重新生成queryPlan。

select * from ds_stg.tr_sec option(recompile)

select top 100 Query_plan,
 Creation_time ,
 Last_execution_time ,
 Execution_count ,
 Last_rows,text,*
from
 sys.dm_exec_query_stats s1
 cross apply sys.dm_exec_sql_text(sql_handle) as s2
 CROSS APPLY sys.dm_exec_query_plan(s1.plan_handle) qp
 where text like ‘select * from ds_stg.tr_sec%‘
 option(recompile

时间: 2024-10-09 10:36:55

option(recompile)的相关文章

关于T-SQL重编译那点事,WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译吗

本文出处:http://www.cnblogs.com/wy123/p/6262800.html   在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译. 之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不

WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译

在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译. 之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不是仅仅只有这么一点区别. 事实上在某些特定情况下,两者的区别并非仅仅是存储过程级重编译和语句级重编译的

WITH RECOMPILE 和 OPTION(RECOMPILE) 使用上的区别

在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等), 一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译. 之前了解的比较浅,仅仅认为是前者就是编译整个存储过程中的所有的语句,后者是重编译存储过程中的某一个语句,也没有追究到底是不是仅仅只有这么一点区别. 事实上在某些特定情况下,两者的区别并非仅仅是存储过程级重编译和语句级重编译的

(转)SQL Server 性能调优(cpu)

摘自:http://www.cnblogs.com/Amaranthus/archive/2012/03/07/2383551.html 研究cpu压力工具 perfom SQL跟踪 性能视图 cpu相关的wait event Signal wait time SOS_SCHEDULER_YIELD等待 CXPACKET等待 CMEMTHREAD等待 调度队列 cpu密集型查询 高CPU使用率的创建几种状况 miss index 统计数据丢失 非SARG谓词 隐式类型转化 参数探测器 ad ho

LK存储过程的执行信息

近来遇到一个比较困扰的优化问题,存储过程的主体逻辑如下: ALTER PROC [dbo].[DBA_TroubleShooting] AS BEGIN DECLARE @StartTime DATETIME DECLARE @EndTime DATETIME SELECT @StartTime=CONVERT(VARCHAR,GETDATE()-1,112),@EndTime=CONVERT(VARCHAR,GETDATE(),112) DECLARE @Spreader VARCHAR(32

SQL Server 诊断查询-(1)

SQL and OS Version information for current instance SELECT @@SERVERNAME AS [Server Name], @@VERSIONAS [SQL Server and OS Version Info]; Query #2 is Core Counts. Get socket, physical core and logical core count from the SQL Server Error log. EXEC sys.

SQL Server 诊断查询-(2)

-- Shows you where the SQL Server failover cluster diagnostic log is located and how it is configured SELECT is_enabled, [path], max_size, max_files FROM sys.dm_os_server_diagnostics_log_configurations WITH (NOLOCK) OPTION (RECOMPILE); -- Knowing thi

修改数据文件和日志文件路径

环境及需求操作系统:Microsoft Windows Server 2008 R2 Enterprise数据库:Microsoft SQL Server 2008 R2 (SP3)服务器增加Fusion-io存储,需将数据库文件迁移到Fusion-io迁移文件必定涉及数据库服务的重启,给定维护时间1小时.服务器上只安装一个数据库实例,实例下面有33个用户数据库(一个小游戏对应一个库),部分数据库有多个数据文件.考虑到要迁移的数据文件个数有107个,最佳方式是使用: ALTER DATABASE

曲演杂坛--表变量的预估行数

在讨论临时表和表变量的区别时,其中一个重点就是两者的预估行数,在默认设置下,表变量的预估行数总是为1,而临时表的预估行数会随表中数据量的变化而变化.正是因为这个区别,在处理大数据量时往往推荐使用临时表而非表变量(当然还有索引的问题). 科普下, 查询优化器会根据预估行数和操作运算符来预估资源消耗,根据资源消耗情况来选取相对“较优”的执行计划,如果预估行数与实际行数差距较大,则可能生成不高效的执行计划. 举个栗子,看着远处的小土包没多远,骑着马跑了半天发现还没到,这就是看山跑死马的典故,如果能相对