Порядок выполнения операторов UNION, EXCEPT, INTERSECT |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
В связи с упражнением 6 (SELECT) рейтингового этапа возник вопрос относительно старшинства операций UNION, EXCEPT и INTERSECT. Логический порядок выполнения этих операций, который приводится в книге Мартина Грабера [4] "Справочное руководство по SQL", выглядит так:
В предположении, что логический порядок выполнения операций соответствует их старшинству, получается, что старшинство операций UNION и EXCEPT идентично и, следовательно, они должны выполняться в том порядке, в котором записаны, если этот порядок не изменяется скобками. При этом обе операции выполняются раньше, чем INTERSECT, т.е. они старше. Рассмотрим три простых запроса, которые будем комбинировать различными способами, чтобы убедиться в этом:
Давайте сначала проверим первое утверждение. Если операция EXCEPT старше операции UNION, то запросы
Аналогично, если операция UNION старше операции EXCEPT, то запросы
Итак, операции UNION и EXCEPT эквивалентны по старшинству. Проверим теперь старшинство операции INTERSECT по отношению к другим операторам (в тестах можно взять любую из них, т.к. они имеют один и тот же порядок). Если INTERSECT "младше" или эквивалентен UNION, то запросы
Вывод. Логический порядок, приведенный в начале статьи не соответствует старшинству операций, и, на мой взгляд, его следует поменять на обратный:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Свадебные букеты |
| Заказ и доставка цветов на дом в Москве. Салоны цветов Мир Экзотики. |
| zakaz-buketa.ru |
| Какие витамины пить беременным |
| Общение в блогах, сообществах по интересам. Дневник молодой мамы. |
| minibanda.ru |
| Подключение интернет |
| История и новости. Каталог товаров. |
| ispreview.ru |


