На аналітичні функції не впливають предикати в реченні WHERE, умови об’єднання в реченні JOIN або вирази групування в реченні GROUP BY поточного запиту. 2 серпня 2024 р.
Аналітичні функції — це останній набір операцій, які виконуються в запиті, за винятком останнього речення ORDER BY. Усі об’єднання та всі пропозиції WHERE, GROUP BY і HAVING завершуються перед обробкою аналітичних функцій. тому аналітичні функції можуть з’являтися лише в списку вибору або реченні ORDER BY.
Використання функцій SQL Server у реченні WHERE ваших запитів може значно вплинути на продуктивність. SQL Server має обчислювати функцію для кожного рядка в таблиці, що може зайняти багато часу, особливо для великих таблиць. Натомість ефективнішим є використання необроблених даних у реченні WHERE, коли це можливо.
Ви ніколи не повинні використовувати скалярну функцію в пропозиції where оскільки індекси не можна використовувати, і часто потрібне повне сканування таблиці. І якщо вам потрібно спочатку змусити виконати частину запиту CTE, ви можете матеріалізувати результати у тимчасовій таблиці, а потім вибрати з неї.
Функції вікна дозволені лише в списку вибору та реченні ORDER BY. Рядки результатів запиту визначаються з пропозиції FROM після обробки WHERE , GROUP BY і HAVING , а виконання вікон відбувається перед ORDER BY , LIMIT і SELECT DISTINCT .
Аналітичні функції обчислити сукупне значення на основі групи рядків. Проте, на відміну від агрегатних функцій, аналітичні функції можуть повертати кілька рядків для кожної групи.