Published on

September 3, 2019

Общие сценарии, которые мешают повторному использованию планов запросов SQL Server

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

Различия в пробелах

Одним из распространенных сценариев, которые мешают повторному использованию планов запросов, являются различия в пробелах. Даже небольшое различие в пробелах может привести к генерации нового плана SQL Server. Например, если у вас есть два запроса, которые идентичны, за исключением дополнительного пробела перед именем таблицы, SQL Server сгенерирует отдельные планы для каждого запроса. Важно быть внимательным к пробелам при написании запросов, чтобы обеспечить повторное использование планов.

Различия в регистре букв

Еще одним фактором, который может помешать повторному использованию планов запросов, являются различия в регистре букв. SQL Server рассматривает запросы с разным регистром букв как отдельные запросы и генерирует для них отдельные планы. Например, если у вас есть два запроса, которые идентичны, за исключением регистра букв ключевых слов, SQL Server сгенерирует отдельные планы для каждого запроса.

Комментарии

Добавление комментариев к вашим запросам может улучшить ясность вашей бизнес-логики. Однако выполнение запросов с комментариями и без них может помешать повторному использованию планов запросов. SQL Server рассматривает запросы с комментариями как разные запросы и генерирует для них отдельные планы. Важно быть внимательным к этому при использовании комментариев в ваших запросах.

Имена схем

Запросы, которые не указывают имя схемы, также могут помешать повторному использованию планов запросов. Если имя таблицы не предваряется схемой, SQL Server не может гарантировать, что каждое выполнение запроса должно выполняться для точно такой же таблицы. Это заставляет SQL Server генерировать новые планы для каждого выполнения, что препятствует повторному использованию планов.

Параметры SET

Различные настройки параметров SET также могут помешать повторному использованию планов запросов. Если у вас есть два запроса, выполняющихся с разными параметрами SET, SQL Server сгенерирует отдельные планы для каждого запроса. Важно обеспечить согласованность параметров SET, когда вы хотите максимизировать повторное использование планов запросов.

Простые типы параметризации

SQL Server может автоматически параметризовать простые запросы самостоятельно. Однако типы данных параметров могут влиять на повторное использование планов запросов. Если запрос параметризован и отправляется новое значение, которое превышает определенный тип данных, SQL Server сгенерирует новый план. Важно обеспечить соответствие типов данных параметров передаваемым значениям.

Будьте последовательными

В заключение, SQL Server очень требователен к различиям в ваших запросах, несмотря на то, насколько малы эти различия. Чтобы максимизировать повторное использование планов запросов, важно обеспечить точное совпадение ваших запросов. Обратите внимание на пробелы, регистр букв, комментарии, имена схем, параметры SET и типы данных параметров, чтобы избежать ненужной генерации планов.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.