Mysql
 sql >> база данни >  >> RDS >> Mysql

Ред за изпълнение на MySQL заявка/клауза

Действителното изпълнение на MySQL операторите е малко сложно. Стандартът обаче определя реда на интерпретация на елементите в заявката. Това е основно в реда, който сте посочили, въпреки че според мен HAVING и GROUP BY може да дойде след SELECT :

  • FROM клауза
  • WHERE клауза
  • SELECT клауза
  • GROUP BY клауза
  • HAVING клауза
  • ORDER BY клауза

Това е важно за разбирането как се анализират заявките. Не можете да използвате псевдоним на колона, дефиниран в SELECT в WHERE клауза, например, защото WHERE се анализира преди SELECT . От друга страна, такъв псевдоним може да бъде в ORDER BY клауза.

Що се отнася до реалното изпълнение, това наистина зависи от оптимизатора. Например:

. . .
GROUP BY a, b, c
ORDER BY NULL

и

. . .
GROUP BY a, b, c
ORDER BY a, b, c

и двете имат ефекта на ORDER BY не се изпълнява изобщо - и така не се изпълнява след GROUP BY (в първия случай ефектът е премахването на сортирането от GROUP BY а във втория ефектът е да не се прави нищо повече от GROUP BY вече го прави).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя индекси към MySQL таблици?

  2. Обработка на транзакции в MySQL

  3. Може ли MySQL FIND_IN_SET или еквивалент да се използва за използване на индекси?

  4. Коя е най-добрата структура на базата данни за съхраняване на многоезични данни?

  5. mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object