1

我已经阅读了 SQL Server 2008 的“OPTIMIZE FOR UNKNOWN”查询计划选项背后的理论和观点。我明白它做得很好。

我做了一些有限的实验,发现使用暖缓存,它只对 > 100k 行有用。然而,这是在一个简单的表和查询上,没有连接、过滤等。在冷缓存上,情况无疑会更有利。

我目前没有生产系统来调整之前/之后。所以我很好奇是否有人在测试之前/之后做过任何有用的发现,以确定何时使用此选项以及何时不使用。

更新:

我创建了一个包含 3 个列、UID 上的 PK 和 Col2 (int) 上的索引的表。所有处理都针对 Col2。指示的是行数和时间 (DATEDIFF * 1000000):

Type        1,000   5,000   20,000  100,000
Normal      0.3086  6.327   26.427  144.83, 141.126
Recompile           117.59  584.837 
For Unknown 0.8101  6.52    26.89   143.788, 143.248
4

1 回答 1

0

当您的数据充分倾斜以致使用一个参数值生成的计划完全不适合该参数的另一个潜在值时,您将使用它。即解决参数嗅探问题。

您问题的其余部分似乎与提示或可回答的 IMO 的目的并不特别相关。

于 2010-12-07T12:19:19.857 回答