1. 程式人生 > >sql執行順序

sql執行順序

calc alc avi .cn pos for osi lis ref

執行順序:

  sql的解析順序是從左往右,從上往下的。(類比編譯)

  官方給出的select查詢sql結構說明如下:

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      SQL_NO_CACHE [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
      [PARTITION partition_list
] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS (window_spec) [, window_name AS (window_spec)] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,
] row_count | row_count OFFSET offset}] [INTO OUTFILE ‘file_name‘ [CHARACTER SET charset_name] export_options | INTO DUMPFILE file_name | INTO var_name [, var_name]] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE]]

  一、sql執行順序
    (1) from
    (2) join
    (3) on
    (4) where
    (5) group by(開始使用select中的別名,後面的語句中都可以使用)
    (6) avg,sum……(聚合函數)
    (7) having
    (8) select
    (9) distinct
    (10) order by
    (11) limit

  SELECT語句執行順序
    開始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最終結果
    每執行一步,就會在內存或者間接存儲(臨時文件)中,產生一個邏輯表(中間結果),供接下來的子句使用,如果不存在某個子句,就跳過 。

更多文檔

  https://www.cnblogs.com/clsn/p/8047028.html#auto_id_14

  https://www.cnblogs.com/yyjie/p/7788428.html

sql執行順序