Я бачу часті посилання на WITH
запити (загальні вирази таблиць або CTE), що діють як огорожу для оптимізації, де сервер не може штовхати фільтри вниз на запити CTE, витягувати загальні вирази вгору із CTE тощо. Це часто стверджується бути поведінкою, що вимагається стандартами SQL.
CTE, безумовно, є оптимізаційною огорожею в PostgreSQL ... але чи цього вимагає стандарт, чи насправді просто деталізація щодо впровадження?
Наприклад, ці повідомлення в списках розсилки стверджують або припускають, що це стандарт:
Після згадування про це у коментарі мене запитали, де це вказано - і після перегляду єдиного проекту SQL: 2008 я маю доступ до мене, не маючи великого шансу знайти його.
Я ще не інтенсивно вивчав стандарт, тому сподіваюся на пропозицію від того, хто має: Чи дійсно стандарту потрібне огородження оптимізації CTE в PostgreSQL? І якщо так, то де це вказано? Або заяви у списку розсилки Pg помилкові?
Дивіться також нитку огорожі оптимізації CTE у списку todo? .
STABLE
абоIMMUTABLE
функції.