Microsoft SQL Server

Процессор запросов


Процессор запросов обеспечивает обработку команд на языке Transact-SQL - одном из диалектов стандартного языка за-просов. К числу наиболее важных новых возможностей, которые обеспечивает процессор запросов, относятся следующие:

Использование более одного индекса на таблицу.

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

Новые способы соединения таблиц в запросах (JOIN).

Наряду с традиционным алгоритмом разрешения соединения таблиц (JOIN) - вложенным циклом (nested loop), оптимизатор может теперь применять и новые, зачастую более эффективные стратегии -

слияние (merge join) и хеширование (hash join)

.

Слияние

применяется, когда обе соединяемые таблицы отсортированы по ключу соединения.

Хеширование



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

Распределенные и гетерогенные запросы.

В версии 7.0 процессор запросов обращается за данными к

системе хранения (Storage Engine)

через интерфейс OLE DB. Через этот же интерфейс он может обращаться за данными и к любым другим OLE DB-совместимым источникам данных - как локальным (находящимся на этом же компьютере), так и удаленным. Таким образом, стандартные операторы SELECT, INSERT, UPDATE и DELETE могут теперь в одном запросе соединять таблицы из разных источников данных. Этими источниками данных могут быть как Microsoft SQL Server, так и другие СУБД, а также нереляционные источники данных, например Exchange Server, Index Server и др. В зависимости от возможностей OLE DB-провайдера возможны три варианта обращения к удаленным данным - только чтение удаленных данных, их изменение и включение изменений в распределенную транзакцию. При этом изменение локальных данных возможно в рамках распределенного запроса в любом случае.




Разделяемые планы запросов.


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



Полнотекстовый поиск.


SQL Server обеспечивает возможности полнотекстового поиска за счет интеграции с системой полнотекстового индексирования, используемой также в Index Server и Site Server. Взаимодействие с этой системой осуществляется через OLE DB. Управление построением и поддержкой индексов осуществляется из главного средства администрирования SQL Server - SQL Enterprise Manager. Полнотекстовые индексы хранятся за пределами баз данных SQL Server - в специально отведенных файловых каталогах. Обновление индексов осуществляется вручную или по расписанию. Построение индекса возможно по символьным и текстовым полям таблиц. Поиск (SELECT) с использованием полнотекстового индекса осуществляется при использовании двух специальных функций - CONTAINS() и FREETEXT().






Содержание раздела