mysql 執行順序 SQL語句執行順序分析

首先,SELECT語句的基本語法如下: 

  SELECT selection_list # What columns to select 

  FROM table_list # Which tables to select rows from 

  WHERE primary_constraint # What conditions rows must satisfy 

  GROUP BY grouping_columns # How to group results 

  HAVING secondary_constraint # Secondary conditions rows must satisfy 

  ORDER BY sorting_columns # How to sort results 

  LIMIT from, count; # Limiting row count on results 對於MySQL,除了第一行,其他部分都是可選的,有的DBMS要求FROM從句也是必須的。 

  SQL Select語句完整的執行順序【從DBMS使用者角度】: 

  1、from子句組裝來自不同數據源的數據; 

  2、where子句基於指定的條件對記錄行進行篩選; 

  3、group by子句將數據劃分爲多個分組; 

  4、使用聚集函數進行計算; 

  5、使用having子句篩選分組; 

  6、計算所有的表達式; 

  7、使用order by對結果集進行排序。 

  SQL Select語句的執行步驟【從DBMS實現者角度,這個對我們用戶意義不大】: 

  1)語法分析,分析語句的語法是否符合規範,衡量語句中各表達式的意義。 

  2) 語義分析,檢查語句中涉及的所有數據庫對象是否存在,且用戶有相應的權限。 

  3)視圖轉換,將涉及視圖的查詢語句轉換爲相應的對基表查詢語句。 

  4)表達式轉換, 將複雜的 SQL 表達式轉換爲較簡單的等效連接表達式。 

  5)選擇優化器,不同的優化器一般產生不同的“執行計劃” 

  6)選擇連接方式, ORACLE 有三種連接方式,對多表連接 ORACLE 可選擇適當的連接方式。 

  7)選擇連接順序, 對多表連接 ORACLE 選擇哪一對錶先連接,選擇這兩表中哪個表做爲源數據表。 

  8)選擇數據的搜索路徑,根據以上條件選擇合適的數據搜索路徑,如是選用全表搜索還是利用索引或是其他的方式。 

  9)運行“執行計劃”。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章