OPTION(RECOMPILE)总是更快;为什么?
我遇到了一种奇怪的情况 OPTION (RECOMPILE)查询到查询中会使查询在半秒钟内运行,而省略查询会使查询花费超过五分钟的时间。 从Query Analyzer或C#程序通过执行查询时,就是这种情况SqlCommand.ExecuteReader()。打电话(或不打电话)DBCC FREEPROCCACHE或DBCC dropcleanbuffers没有区别;查询结果始终会即时返回OPTION (RECOMPILE)不超过五分钟的情况下。始终使用相同的参数调用该查询(为了进行此测试)。 我正在使用SQL Server 2008。 我对编写SQL相当满意,但以前从未OPTION在查询中使用过命令,并且在扫描此论坛上的帖子之前并不熟悉计划缓存的整个概念。我从帖子中了解到,这OPTION (RECOMPILE)是一项昂贵的操作。显然,它为查询创建了新的查找策略。那么,为什么随后的省略的查询OPTION (RECOMPILE)是如此之慢呢?后续查询是否应该利用上一次包含重新编译提示的调用所计算的查找策略? 是否有一个查询在每次调用时都需要重新编译提示是非常不寻常的吗? 对不起入门级的问题,但我实在无法一字不漏。 更新:我被要求发布查询... select acctNo,min(date) earliestDate from( select acctNo,tradeDate as date from datafeed_trans where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_money where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_jnl where …