Я захватил фактический план запроса для конкретного запроса.
После этого я изменил несколько вещей (включая обновление статистики) и перезапустил этот конкретный запрос. Теперь фактический план запроса другой (что имеет смысл).
Запрос теперь выполняется намного быстрее. Мне любопытно, связан ли с этим новый план выполнения, поскольку другие изменения (изменения в настройке ввода-вывода, настройках виртуальной машины, перезапуск экземпляра sql и т. Д.) Также могут привести к повышению производительности. Чтобы проверить это, я хотел бы еще раз выполнить запрос и попытаться заставить SQL Server использовать старый план выполнения.
Вопрос : есть ли способ повторно выполнить запрос с предоставленным пользователем планом выполнения или даже выполнить запрос непосредственно из такого плана?
Вот что я пытался выяснить это:
- Я искал в книгах, которые у нас есть в офисе ( Внутренние компоненты и устранение неполадок в Профессиональном SQL Server 2012 , Запрос Microsoft SQL Server 2012 );
- Поиск в Google, например, «выполнить запрос на основе конкретного плана запроса»
- DBA.SE ищет, например, «выполнить план запроса» и «повторно выполнить план выполнения»
- И, наконец, тот, который ответил на мои вопросы много раз раньше: внимательно проверьте «Вопросы, на которые уже есть ваш ответ», прежде чем нажимать «Опубликовать свой вопрос» :-)
Итак, суть: возможно ли это? Если так: как?
Ответы:
Да.
Вам нужен
USE PLAN
намек.В котором вы поставляете
XML
с первого плана.Хотя это и не гарантирует, что план будет точно таким же (например, вычислительные скалярные операторы могут перемещаться, например), он, вероятно, будет довольно близок.
источник