有关何时使用OPTIMIZE FOR UNKNOWN的经验

时间:2010-12-07 11:57:46

标签: sql-server sql-server-2008 query-optimization query-hints

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

我做了一些有限的实验,发现有一个温暖的缓存,它只对>有益。 100k行。但是,这是一个简单的表和查询,没有连接,过滤等。在冷缓存上,图片无疑会更有利于它。

我目前没有生产系统可以在之前/之后进行测试。所以我很好奇是否有人在测试之前/之后完成了任何有用的发现,以确定何时使用此选项以及何时不使用。

更新:

我创建了一个包含3个cols的表,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

1 个答案:

答案 0 :(得分:0)

如果您的数据充分扭曲,使用一个参数值生成的计划将完全不适合参数的另一个潜在值,您将使用它。即解决参数嗅探问题。

您的问题的其余部分似乎与提示或负责的IMO的目的无关。