Планы выполнения SQL Server - фактические и расчетные - PullRequest
2 голосов
/ 01 сентября 2010

Я читаю прекрасную книгу Гранта Фричи, SQL Server Execution Plans. На стр. 21 он заявляет, "When a query is submitted to the server, an estimated execution plan is created by the optimizer. Once that plan is created, and before it gets passed to the storage engine, the optimizer compares this estimated plan to the actual execution plan that already exist in the plan cache." Он продолжает, что это сделано, потому что генерация планов запросов обходится дорого.

Похоже, что SQL Sever вычислит оценочный план оптимизатором и, если оценочный план не соответствует фактическому плану в кэше планов, создаст фактический план и сохранит его в кэше. Таким образом, похоже, существует ли существующий план в кэше планов или нет, SQL Server всегда будет генерировать приблизительный план. Если это все равно будет делать, зачем вообще что-то хранить в кеше? Почему бы просто не всегда рассчитать план, так как он все равно будет выполнять его хотя бы один раз? Я что-то упустил?

Спасибо.

1 Ответ

1 голос
/ 01 сентября 2010

Я бы прочитал это , что точнее, ИМХО

Взятие Гранта здесь тоже

...