標籤:

SQL執行順序

1. FROM 子句 組裝來自不同數據源的數據

2. WHERE 子句 基於指定的條件對記錄進行篩選

3. GROUP BY 子句 將數據劃分為多個分組

4. 使用聚合函數進行計算

5. 使用HAVING子句篩選分組

6. 計算所有的表達式

7. 使用ORDER BY對結果集進行排序

8. select 獲取相應列

9. limit截取結果集

Mysql 從4.1版本開始支持子查詢,使用子查詢可以進行select語句的嵌套查詢,即一個人select查詢的結果作為另一個select語句的條件。子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成SQL操作。所以子查詢雖然可以使查詢語句很靈活,但是查詢效率並不高。

執行子查詢時,MySQL需要為內層查詢語句的查詢結構建立一個臨時表。然後外層查詢語句從臨時表中查詢記錄。查詢完畢後再撤銷這些臨時表。因此子查詢的速度會受到一定影響。如果查詢的數據量比較大,這種影響就會隨之增大。

在Mysql中,可以使用連接(JOIN)查詢來替代子查詢。連接查詢不需要創建臨時表,其速度比子查詢要快,如果查詢中使用索引的話,性能會更好。

推薦閱讀:

MySQL · 性能優化 · MySQL常見SQL錯誤用法
mysql DBA技術難度低為什麼工資比oracle高?
同一台伺服器上裝MySQL和oracle會有衝突么?
【我的DBA好友系列】之隔壁老王在練腰
一觸即發,2017年,資料庫世界的諸神之戰

TAG:MySQL |