SQLServer2008の「OPTIMIZEFORUNKNOWN」クエリプランオプションの背後にある理論と見解を読みました。私はそれが十分にうまくいくことを理解しています。
いくつかの限られた実験を行ったところ、ウォームキャッシュを使用すると、10万行を超える場合にのみメリットがあることがわかりました。ただし、これは、結合やフィルタリングなどのない単純なテーブルとクエリで行われました。コールドキャッシュでは、画像の方がはるかに有利であることは間違いありません。
私は現在、前後のベンチングを行うためのプロダクションシステムを持っていません。したがって、誰かがテストの前後に行って、このオプションをいつ使用するか、いつ使用しないかについて、有用な発見をしたかどうかに興味があります。
アップデート:
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