Не завжди підлеглий запит обчислюється заново для кожного рядка результатів декартового добутку таблиць головного запиту: дуже часто підлеглий запит повертає одні і ті самі результати для всіх рядків чи для групи рядків, наприклад:
99). Вивести список філій, для яких фактичний об’єм продаж менший середнього для всіх філій планового об’єму продаж.
99).а). SELECT Misto
FROM Filii
WHERE Prodano <
(SELECT AVG (Plan)
FROM Filii )
- було би недоцільно виконувати такий підлеглий запит для кожної філії, бо середній план продаж не змінюється, він абсолютно не залежить від філії, яка в даний момент перевіряється. Тому підлеглий запит можна виконати лише один раз і, отримавши середній план (наприклад, 55000 грн.), перетворити головний запит до вигляду:
99).б). SELECT Misto
FROM Filii
WHERE Prodano < 55000
В промислових СУБД це спрощення використовується кожного разу, коли є така можливість, для того, щоб зменшити об’єм роботи, необхідної для виконання запиту.
Проте коли підлеглий запит містить зовнішнє звертання, то таке спрощення застосовувати, не можна; як в прикладі:
100). Вивести список філій, в яких планові об’єми продаж перевищують сумарні плани працівників, що працюють в цих філіях.
100). SELECT Misto
FROM Filii
WHERE Plan >
(SELECT SUM (Plan)