查詢語句的執行過程
- 通過網絡的通訊協議接收客戶端傳入的SQL
- 查看該SQL對應的結果在查詢緩存中是否存在
- 存在則直接返回結果
- 不存在則繼續往下走
- 由解析器來解析當前SQL,最終形成初步的解析樹
- 再由預處理器對解析樹進行調整,完成佔位符賦值等操作
- 查詢優化器對最終的解析樹進行優化,包括調整SQL順序等
- 根據優化後的結果得出查詢語句的執行計劃,就是查詢數據的具體實施方案,交給查詢的執行引擎
- 查詢執行引擎調用存儲引擎提供的API,最後由存儲引擎來完成數據的查詢,然後返回結果
sql 查詢語句優化(主要是優化索引)
- 儘量不是使用select * 查詢語句,用哪個字段查哪個字段
- 應儘量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索
引而進行全表掃描,如:select id from t where num=10 or num=20
可以這樣查詢:select id from t where num=10 union all select id from t where num=20