Настройки синтаксиса SQL

Язык SQL – язык декларативный. Он декларирует то, что мы хотим получить в ответе. На самом деле это не непосредственный код, который исполняется.

Язык SQL – это язык, который потом с помощью оптимизатора превращается в исполняемый код. В отличие от обычных интерпретаторов, которые из байт кодов делают исполняемый код, здесь ещё учитывается план выполнения, поэтому здесь более сложная работа происходит, чем в обычных кодовых системах типа Java, TopNet и т.п. Поэтому получение одного и того же результата возможно при написании запросов разными способами.

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

В последнее время появились компании (типа Lecco), которые начали создавать продукты позволяющие изменять структуру запроса с возможностью получения одного и того же результата. Например, запрос с подзапросом она может переделать в запрос с объединением таблиц, гарантируя то, что данные в одном и другом случае будут одинаковыми на выходе. Этого оптимизаторы ещё делать не умеют. Но сейчас ведутся разработки программ, в которых прежде, чем запрос вшить в код программы, Вы «ставите» на эту программу в интерактивном режиме, выбирая запрос, она Вам его переписывает, делает из него другой запрос, который заведомо будет работать лучше, этот запрос Вы вставите в оптимизатор и он в зависимости от расположения данных его оптимизирует. Т.е. сейчас появляются программы, которые позволяют редакцию запроса. (т.е. запрос можно написать как угодно плохо, а он из него сделает, на сколько возможно хорошо, потом Вы вставите его в программу, учтёт расположение записей, ставит план запроса и оптимизирует). Это перспективное направление, появилось 5-6 лет назад.


Комментарии запрещены.





Статистика

Рейтинг@Mail.ru