我已经阅读了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
答案 0 :(得分:0)
如果您的数据充分扭曲,使用一个参数值生成的计划将完全不适合参数的另一个潜在值,您将使用它。即解决参数嗅探问题。
您的问题的其余部分似乎与提示或负责的IMO的目的无关。