SQL Lesson 12: 查詢執行順序
阿新 • • 發佈:2021-01-18
SQL Lesson 12: 查詢執行順序
完整的SELECT查詢
SELECT DISTINCT column, AGG_FUNC(column_or_expression), … FROM mytable JOIN another_table ON mytable.column = another_table.column WHERE constraint_expression GROUP BY column HAVING constraint_expression ORDER BY column ASC/DESC LIMIT count OFFSET COUNT;
查詢執行順序
1. FROM 和 JOINs FROM 或 JOIN會第一個執行,確定一個整體的資料範圍. 如果要JOIN不同表,可能會生成一個臨時Table來用於 下面的過程。總之第一步可以簡單理解為確定一個數據源表(含臨時表) 2. WHERE 我們確定了資料來源 WHERE 語句就將在這個資料來源中按要求進行資料篩選,並丟棄不符合要求的資料行,所有的篩選col屬性 只能來自FROM圈定的表. AS別名還不能在這個階段使用,因為可能別名是一個還沒執行的表示式 3. GROUP BY 如果你用了 GROUP BY 分組,那GROUP BY 將對之前的資料進行分組,統計等,並將是結果集縮小為分組數.這意味著 其他的資料在分組後丟棄. 4. HAVING 如果你用了 GROUP BY 分組, HAVING 會在分組完成後對結果集再次篩選。AS別名也不能在這個階段使用. 5. SELECT 確定結果之後,SELECT用來對結果col簡單篩選或計算,決定輸出什麼資料. 6. DISTINCT 如果資料行有重複DISTINCT 將負責排重. 7. ORDER BY 在結果集確定的情況下,ORDER BY 對結果做排序。因為SELECT中的表示式已經執行完了。此時可以用AS別名. 8. LIMIT / OFFSET 最後 LIMIT 和 OFFSET 從排序的結果中擷取部分資料.
使用