пятница, 29 марта 2024 г.

SQL порядок выполнения операторов

Операторы действуют в таком порядке: 
  1. Сначала нужно определить, откуда брать данные, поэтому первым идёт оператор FROM. На этом же этапе объединяются таблицы операторами JOIN и назначаются для них псевдонимы. Важно учесть, что присоединение предшествует фильтрации и группировке. Это означает, что большие таблицы будут объединяться очень долго. 
  2. Данные выбраны, и наступает очередь оператора WHERE. Остаются только те данные, которые соответствуют условиям. 
  3. После срезов данные группируются оператором GROUP BY и подсчитываются агрегирующими функциями. Обратите внимание, что WHERE предшествует GROUP BY, и это не позволяет сделать срез по группам. В момент получения среза данные ещё не сгруппировались. 
  4. Теперь наступает очередь HAVING — отбираются уже сгруппированные данные. 
  5. Только на этом этапе происходит выбор данных с помощью оператора SELECT, а полям в итоговой таблице присваиваются псевдонимы. По этой причине псевдонимы нельзя использовать после WHERE и HAVING — они ещё не назначены. В некоторых СУБД псевдонимы нельзя использовать и после GROUP BY. В PostgreSQL есть расширение, которое устраняет эту проблему. 
  6. После SELECT срабатывает ключевое слово DISTINCT, которое отбирает уникальные значения. Нужные данные отобраны, и происходит сортировка. 
  7. Оператор ORDER BY действует предпоследним. 
  8. Замыкающим будет оператор LIMIT.

Комментариев нет:

Отправить комментарий