Chi*_*les 0 sql-server execution-plan plan-cache
我是 SQL 执行计划的新手,我正在尝试了解更多有关它们的信息。
我有几个问题。
编译器生成查询计划后,会将其存储在缓存中。当编译器认识到它可以这样做时,查询计划会自动重用。
要发生这种情况,查询必须是相同的临时批处理(直到最后一位空格),或者它是存储过程的一部分,此后从未更改过。
用于计算计划的统计信息必须仍然有效且未更改,所有使用的对象(表、索引、列、约束)也是如此。
DBCC FREEPROCCACHE.可以从各种系统视图和功能(称为 DMV)查询计划。例如,此查询将为您提供 SQL 文本、XML 格式的执行计划以及一大堆其他数据。
SELECT *
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
Run Code Online (Sandbox Code Playgroud)
如果您担心不稳定的计划,它会不断地在好版本和坏版本之间切换,您应该查看参数嗅探之类的东西,并尝试了解什么会导致坏计划浮出水面,以避免它发生。您可能需要更好的索引或统计信息,或者重新制定查询。
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |