Обобщённое табличное выражение (Common Table Expression, CTE) с операцией WITH стоит использовать в следующих случаях: 1
- При написании сложных запросов. 1 CTE позволяет выделять все вложения в отдельные блоки, без использования громоздких подзапросов, в том числе многоуровневых. 1
- Для создания рекурсивных запросов. 1 Например, для извлечения данных из таблиц иерархии. 1
- При использовании в рамках запроса одной таблицы многократно. 1
- Для замены представлений (VIEW) в случаях, когда нет необходимости сохранять в базе SQL запрос представления. 3
CTE не универсальный инструмент, и в решении ряда задач он может оказаться неоптимальным. 2 Кроме того, такие выражения довольно ресурсоёмки: они хранят в кэше временную структуру данных, к которой постоянно обращается как основной запрос, так, возможно, и само табличное выражение. 2