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