Я ознакомился с теорией и взглядами на опцию плана запроса SQL Server 2008 «ОПТИМИЗИРОВАТЬ ДЛЯ НЕИЗВЕСТНОГО». Я понимаю, что это делает достаточно хорошо.
Я провел несколько ограниченных экспериментов и обнаружил, что с теплым кэшем он был полезен только для> 100 тыс. Строк. Однако это было для простой таблицы и запроса без объединений, фильтрации и т. Д. В холодном кэше картина, несомненно, была бы гораздо более благоприятной.
В настоящее время у меня нет производственной системы для тестирования до / после. Поэтому мне любопытно, сделал ли кто-либо до / после тестирования и сделал какие-либо полезные открытия относительно того, когда именно использовать эту опцию, а когда нет.
UPDATE:
Я создал таблицу с 3 столбцами, PK для UID и индекс для 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