3

在 MySql 中测试单个查询的性能,并从图片中取出查询缓存,您可以在 select 语句中使用 sql_no_cache 修饰符:

select sql_no_cache * from Foo;

Microsoft SQL Server 中是否有类似的每次查询选项?我看过很多关于使用的帖子:

CHECKPOINT
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

但这似乎有点矫枉过正,并且在尝试将相同的非缓存查询的性能与 MySql 进行比较时,可能会给 SQL Server 带来不利影响。

4

1 回答 1

2

要从缓存中删除特定的查询计划,请获取查询的计划句柄:

SELECT
    t.text,
    s.plan_handle,
    s.creation_time,
    s.last_execution_time
FROM sys.dm_exec_query_stats as s
CROSS APPLY sys.dm_exec_sql_text (s.sql_handle) as t
-- optionally filter based on query text
-- WHERE t.text LIKE '%blah%';

SQL Server 2008+ 允许传递计划句柄以DBCC FREEPROCCACHE从缓存中删除特定计划:

DBCC FREEPROCCACHE (<plan_handle>);
于 2013-01-11T21:47:40.033 回答