全文搜索查询耗时差异很大

全文搜索查询耗时差异很大

数据库版本:Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 2008 年 11 月 24 日 13:01:59 版权所有 (c) 1988-2005 Microsoft Corporation Express Edition 带有 Windows NT 5.1 上的高级服务(Build 2600:Service Pack 3)

我有一张大约有 7000 行的表,其中几个文本字段启用了全文搜索。如果我运行以下查询:

dbcc freeproccache
dbcc dropcleanbuffers 

set statistics time on
select * from Codes
where CONTAINS([level1AltDesc], '"Unspec*"')
set statistics time off

我每次都能得到正确一致的结果。但是,耗时和 CPU 时间可能会有很大差异。多次执行后,我在消息中收到以下内容:

DBCC 执行已完成。如果 DBCC 打印了错误消息,请联系您的系统管理员。 DBCC 执行已完成。如果 DBCC 打印了错误消息,请联系您的系统管理员。

(861 行受影响)

SQL Server 执行时间:CPU 时间 = 0 毫秒,耗时 = 251 毫秒。

再运行几次我得到:

DBCC 执行已完成。如果 DBCC 打印了错误消息,请联系您的系统管理员。 DBCC 执行已完成。如果 DBCC 打印了错误消息,请联系您的系统管理员。

(861 行受影响)

SQL Server 执行时间:CPU 时间 = 15 毫秒,耗时 = 869 毫秒。

我尝试使用 IO STATISTICS 运行,但它们从未改变。我尝试使用 SQL Profiler,但只看到经过时间的相同差异。我只添加了相当标准的事件,所以我可能错过了可以解释这一点的事件。

我使用存储过程而不是独立查询时也看到了同样的行为。将其作为存储过程运行,然后查询 sys.dm_exec_query_stats,我可以看到 total_elapsed_time 明显高于 total_worker_time。

由于这是在专用的测试机器上进行的,我是唯一的用户,没有来自任何其他来源的负载,计算机上也没有明显的负载(平均 98-99% 的 CPU 空闲)我有点担心当系统承受更重的负载时在生产机器上可能会发生什么。

关于什么原因导致执行时间大幅波动以及我该采取什么措施,您有什么想法吗?

相关内容