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