Порядок выполнения MySQL запросов
1 декабря 2014
Оператор SELECT имеет следующую структуру:
Но выполняется оператор выборки совсем не в том порядке, в котором он написан.
В общем виде запрос SELECT выполняется в следующем порядке:
SELECT
[DISTINCT | DISTINCTROW | ALL]
имя_столбца,...
[FROM перечень_таблиц
[{INNER | {LEFT | RIGHT | FULL} OUTER | CROSS } JOIN имя_таблицы_2 ON <условия соединения таблиц>]
]
[WHERE перечень условий]
[GROUP BY {unsigned_integer | имя_столбца | формула} [ASC | DESC], ...]
[HAVING условия_группировки]
[ORDER BY {unsigned_integer | имя_столбца | формула} [ASC | DESC], ...]
[LIMIT {номер_первой_выводимой_строки, количество_выводимых_строк | количество_выводимых строк}]
Но выполняется оператор выборки совсем не в том порядке, в котором он написан.
В общем виде запрос SELECT выполняется в следующем порядке:
- FROM, JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
- LIMIT