Многие люди используют базы данных, но на самом деле они не понимают разницы между статическим и динамическим SQL. Их цель – получить статический или динамический вывод запроса. В этой статье вы узнаете о статических и динамических SQL-запросах с подробным обсуждением того, как обрабатывается SQL-запрос, динамической СУБД (система управления базами данных), статическими и динамическими отчетами и примером приложения со встроенным SQL.
Запросы встроенного или статического SQL – это те инструкции, которые не изменяются во время выполнения или во время выполнения и могут быть жестко закодированы (где данные или параметры не могут быть изменены) в различных приложениях.
Рассмотрим пример встроенного приложения, в котором операторы в основном встроены в исходные файлы C++, где препроцессор переводит операторы в вызовы библиотеки времени выполнения. Он переносится в другие среды и предоставляет те же функции для каждой операционной среды.
Приложение встроенного SQL состоит из операторов SQL, и эти операторы перед компиляцией преобразуются в код C или C++. Как видно на диаграмме, приложение во время выполнения использует библиотеку интерфейса SAP IQ, которая известна как DBLIB и используется для связи с серверами баз данных. DBLIB – это библиотека динамической компоновки (DLL), которая может использоваться на всех основных платформах.
Как видно из названия, это метод, который позволяет профессионалам создавать операторы SQL, которые можно динамически изменять во время выполнения. Динамический запрос – это оператор, который может быть создан во время запуска или во время выполнения; например, приложение может позволять пользователям запускать свои собственные запросы при исполнении.
Динамическая СУБД – это база данных, имеющая «основанные на значениях» отношения объектов, которые указываются во время извлечения, а местоположения связанных записей обнаруживаются во время извлечения.
Печатный анализ продаж – это пример динамического отчета – неверное утверждение о статических и динамических отчетах. Следующие утверждения об отчетах верны:
Прежде чем продолжить, необходимо понять, как обрабатываются операторы языка структурированных запросов. СУБД выполняет следующие шаги, показанные на схеме:
Например, пользователь хочет выполнить следующий запрос:
SELECT P, Q, R FROM A, B WHERE P> 800 AND R = ‘XYZ’
СУБД проанализирует запрос на отдельные слова, известные как токены, чтобы убедиться, что оператор не содержит орфографических и синтаксических ошибок. Это будет сделано очень быстро, потому что нет необходимости обращаться к базе данных во время синтаксического анализа оператора.
Система управления базой данных будет проверять, существуют ли таблицы (в нашем примере таблицы A и B) в базе данных (системном каталоге) или нет? Есть ли у пользователя права запускать эти операторы? СУБД проверяет, что имена столбцов не являются двусмысленными и существуют.
СУБД оптимизирует оператор, исследуя различные способы. Можно ли использовать индекс (первичный ключ) для ускорения поиска? Должна ли система управления базами данных сначала применить условие поиска к первой таблице, а затем присоединить его ко второй таблице, или она должна начинаться с объединения и затем использовать условие? После изучения всех возможных условий СУБД выберет наиболее подходящее. Он может исследовать тысячи возможных различных способов для одного и того же запроса, поэтому это процесс, требующий интенсивной работы ЦП.
На этом этапе будет сгенерирован план доступа или двоичная форма операторов SQL.
На последнем этапе план доступа будет выполнен.
Основные различия между встроенным и динамическим SQL
Статический | Динамический |
---|---|
В статическом или встроенном SQL способ доступа к базе данных предопределен во встроенном операторе SQL и выполняется препроцессором, где пользователь не может выполнять запросы во время выполнения. | Как будет осуществляться доступ к базе данных, определяется во время выполнения, и пользователь также может выполнять инструкции языка структурированных запросов во время выполнения. |
Это быстрее и эффективнее. | Это менее быстро и эффективно. |
Все запросы к базе данных компилируются во время компиляции. | Все запросы к базе данных компилируются во время выполнения приложения. |
Все процессы, включая анализ, проверку, оптимизацию и создание плана доступа к приложению, выполняются во время компиляции. | Все процессы, включая синтаксический анализ, проверку, оптимизацию и создание плана доступа к приложению (двоичная форма SQL-запросов), выполняются во время выполнения. |
В основном он используется в ситуациях, когда данные распределяются последовательно. | Он используется в ситуациях, когда данные распределены неравномерно. |
Операторы PREPARE, EXECUTE и EXECUTE IMMEDIATE не используются. | Используются операторы PREPARE, EXECUTE и EXECUTE IMMEDIATE. |
Он менее гибкий из-за того, что он жестко встроен в приложение. | Мы можем запускать наши операторы SQL во время выполнения, что делает его более гибким. |
Мне кажется, что человек, который понимает язык этой статьи, уже знает ответ на вопрос, в чём разница между статическим и динамическим SQL. А я не понял. Я хотел понять, в чём разница между статическим и динамическим запросом. Яндекс даёт эту статью на первой странице в ответ на запрос “Что такое динамический запрос”. Вроде статья должна ответить на этот вопрос, но уровень явно для академиков.