Поделиться через


Прямое выполнение

Прямое выполнение — это самый простой способ выполнения инструкции. Приложение создает символьную строку, содержащую инструкцию Transact-SQL, и отправляет ее для выполнения с помощью функции SQLExecDirect . Когда инструкция достигает сервера, SQL Server компилирует его в план выполнения, а затем немедленно запускает план выполнения.

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

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

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

Это преимущество повторного использования планов выполнения работает только в том случае, если несколько пользователей выполняют одну и ту же инструкцию ИЛИ пакет SQL. Следуйте этим соглашениям по кодированию, чтобы повысить вероятность того, что инструкции SQL, выполняемые различными клиентами, достаточно похожи, чтобы иметь возможность повторно использовать планы выполнения:

  • Не включать константы данных в инструкции SQL; вместо этого используйте маркеры параметров, привязанные к переменным программы. Дополнительные сведения см. в разделе "Использование параметров инструкции".

  • Используйте полные имена объектов. Планы выполнения не используются повторно, если имена объектов не являются квалифицированными.

  • При наличии подключений к приложению можно использовать общий набор параметров подключения и инструкции. Планы выполнения, созданные для подключения с одним набором параметров (например, ANSI_NULLS), не используются повторно для подключения с другим набором параметров. Драйвер ODBC собственного клиента SQL Server и поставщик OLE DB собственного клиента SQL Server имеют одинаковые параметры по умолчанию для этих параметров.

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

См. также

Выполнение инструкций (ODBC)