Книга: Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Индексы по выражениям
Индексы по выражениям
Индексы по выражениям (Expression Indexes) используются в тех случаях, ко- |да необходимо обеспечить быстрый поиск или сортировку по значениям, вычисляемым на основе полей таблицы. Необходимый индекс определяется следующим образом:
CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]]
INDEX index ON table COMPUTED BY (expression)
где index - имя индекса, expression - выражение, построенное на основе полей таблицы. В выражении можно использовать арифметические операции, встроенные функции и UDF. Во время оптимизации запросов, если выражение совпадает с выражением, указанным в условии WHERE или в условии соединения, будет использован индекс.
Например, необходимо сделать выборку записей, имеющих поле типа дата, для определенного месяца по всем годам (на примере базы данных Employee из комплекта поставки InterBase 6):
CREATE INDEX employeejhire_date_month_idx ON employee COMPUTED
BY (EXTRACT(MONTH FROM hire_date) ) ;
Попробуем выполнить запрос и посмотрим на выбранный оптимизатором план:
SELECT * FROM employee
WHERE EXTRACT(MONTH FROM hire_date) = 1
PLAN (EMPLOYEE INDEX (EMPLOYEE_HIRE_DATE_MONTH_IDX))
Вычисляемое выражение должно полностью определяться значениями полей таблицы, индекс на основе, например, функции CURRENT_TiMESTAMP, скорее всего, будет бесполезен, хотя Yaffil не запрещает использование подобных выражений. В вычисляемых выражениях нельзя использовать подзапросы. Очень интересные возможности появляются при использовании User-Defined Functions (UDF) в вычисляемых выражениях, с их помощью можно выполнять эффективный поиск по практически любому условию.
- Улучшенная производительность
- Улучшенный оптимизатор запросов
- Оптимизация сетевого трафика
- Эффективная работа с временными файлами сортировки
- Оптимальная структура хранения записей
- Ускоренная работа с индексами
- Улучшенная стратегия вычисления предиката IN и условий, объединенных по OR
- Ускоренное обновление данных
- Уменьшение времени, необходимого для резервного копирования и восстановления
- Индексы по выражениям
- Уменьшение размера, занимаемого индексами
- Выражения в значениях по умолчанию для доменов
- Удобная операция объединения строк
- Расширенные возможности указания пользовательских планов
- Имена индексов ограничений
- Улучшенное время отклика для версии SuperServer
- Улучшенный протокол локальных соединений (XNET)
- Ограничение времени ожидания для транзакций (Lock timeout)
- Большие индексы
- 2.3.5. Индексы
- 4.2.2. Возвращаясь к строкам и регулярным выражениям
- Индексы
- 15.4.1.2. По возможности избегайте макросов с выражениями
- Сопоставление строк с регулярными выражениями
- 4.1 ИНДЕКСЫ
- 23.2.2. Сопоставление с регулярными выражениями
- Расширение редактора - поиск с регулярными выражениями
- Автоматические индексы в сравнении с определенными пользователем индексами
- Направленные индексы
- Для чего нужны индексы?