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)運行“執行計劃”。
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)運行“執行計劃”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.