Двадцать пять заповедей SQL - Для фильтрации записей используйте WHERE, а не HAVING
ОГЛАВЛЕНИЕ
Страница 11 из 26
10. Для фильтрации записей используйте WHERE, а не HAVING.
Избегайте использования раздела HAVING вместе с GROUP BY на индексированных столбцах. В этом случае индекс не используется. Фильтруйте строки с помощью раздела WHERE, а не раздела HAVING. Если для таблицы EMP существует индекс на столбце DEPTID, в при выполнении следующего запроса этот индекс использоваться не будет:
SELECT DEPTID, SUM(SALARY)
FROM EMP
GROUP BY DEPTID
HAVING DEPTID = 100;
Однако этот запрос можно переписать так, чтобы индекс применялся:
SELECT DEPTID, SUM(SALARY)
FROM EMP
WHERE DEPTID = 100
GROUP BY DEPTID;