Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Индексы основанные на функциях

Индексы основанные на функцияхВ Oracle 11 также допускается создание так называемых Основанных на функциях индексов, в которых вместо столбцов указывается выражение, содержащее столбцы и функции. К примеру, если известно, что в Bitmap-индексы Ключевое слово BITMAP указывает на то, что индекс должен создаваться с двоичной картой для каждого уникального ключа, а не индексировать каждую строку. Компания Oracle рекомендует создавать подобные индексы для столбцов с небольшим количеством возможных значений. К примеру отличными кандидатами на такую индексацию выступают поля пола и семейного положения в таблице сотрудников. В базе данных ACME кандидатом на Bitmap-индексацию является поле состояния заказа, так как для него определено всего четыре значения: COMPLETE, INVOICED, SHIPPED и CANCELLED. В следующем примере создается Bitmap-индекс

Как уже отмечалось, для таблиц и индексов базы данных можно определить отдельные пространства таблиц (и это имеет смысл с точки зрения производительности базы данных). Синтаксис этого предложения такой же, как и в инструкции CREATE TABLE (в следующем примере предполагается существование пространства таблиц Следующая инструкция создает уникальный индекс IDX_CUST_NAME_ALS по столбцам CUST_NAME_S и CUST_ALIAS_S таблицы CUSTOMER с сортировкой значений, принятой по умолчанию (по возрастанию).

CREATE UNIQUE INDEX idx_cust_name_als ON customer(cust_name_s, cust_alias_s)

Синтаксис DB2 и Microsoft SQL Server позволяет использовать предложение INCLUDE для определения дополнительных столбцов в индексе. Эти дополнительные столбцы не участвуют в поиске; другими словами, не предполагается, что они будут содержаться в предложении WHERE. В то же время эти поля часто участвуют в разделе SELECT, и их извлечение непосредственно из индекса займет меньше времени, чем из таблицы. Для примера предположим, что известно, что пользователи, выполняющие запросы отбора к таблице заказчиков, часто извлекают имя клиента, его статус и кредитную надежность, при этом в предложении WHERE обычно участвуют имя и псевдоним заказчика. Следующий индекс может повысить производительность подобных запросов.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *