Временные индексы

Временные индексы могут создаваться самой СУБД ЛИНТЕР при обработке многопеременных предикатов (т.е. таких, в которых есть обращения к столбцам двух и более таблиц). Решение о создании временного индекса осуществляется на основе анализа поискового запроса.

Например, при обработке запроса вида

SELECT ... FROM A, B WHERE ... AND A.X=B.Y AND ...

для предиката A.X=B.Y проверяется:

  • наличие индексов на столбцы A.X и B.Y;

  • число записей в каждой из этих таблиц;

  • число записей в каждой из этих таблиц, удовлетворяющих уже проверенным условиям.

В результате может быть принято решение построить временный индекс на множество значений столбца A.X (B.Y), соответствующих отобранным записям таблицы X (Y). Альтернативные решения – использовать существующий индекс (если он есть), либо какую-то таблицу сканировать полностью (обычно в случае ее малого размера).

Временный индекс является одностолбцовым. Он создаётся в рабочем файле (1.31) и автоматически удаляется по окончании обработки запроса, для выполнения которого он был построен.