Современные реляционные СУБД выполняют сложные
Современные реляционные СУБД выполняют сложные SQL-запросы, включающие вложенные подзапросы с функциями агрегации, представления с union/union all, distinct, group by и т.д. Такие запросы становятся все более и более важными в системах поддержки принятия решений (Decision-Support System, DSS) и оперативной аналитической обработки (On-Line Analytical Processing, OLAP). В качестве метода оптимизации таких запросов принято использовать преобразование запросов.
Подзапросы – это мощный компонент языка SQL, повышающий его уровень декларативности и выразительных возможностей. Стандарт SQL позволяет использовать подзапросы в разделах SELECT, FROM, WHERE и HAVING. Подзапросы широко используются в эталонных тестовых наборах поддержки принятия решений TPC-H [4] и TPC-DS [15]. Почти половина из 22 запросов в тестовом наборе TPC-H содержит подзапросы. Почти все подзапросы являются коррелированными, и многие из них содержат вызовы агрегатных функций. Поэтому эффективное выполнение сложных подзапросов является существенно важным для систем баз данных.