1.首先就是用戶發送一條SQL經過客戶端接收以後,交由解析器解析SQL建立對應的解析樹以後
2.而後優化獲取對應的數據表的信息-結構
3.獲取表中對應的數據表,首先就會去緩存中讀取索引的若是沒有就會經過IO讀取在磁盤中記錄索引的信息並返回
4.選擇合適的索引:由於一個表會有不少的索引,MySQL會對於每個索引進行相應的算法推敲而後再作相應的刪選留下最爲合適的索引,因此若是說索引的數量多的話會給查詢優化器帶來必定的負擔。
5.由於在當前的索引爲二級索引因此這個時候就會根據二級索引的btree獲取到對應的id
6.讀取到所對應的id以後再經過回表查詢
7.根據主鍵索引獲取到對應的數據的頁在磁盤中的位置
8.在獲取數據以前會判斷索引緩存的數據是否知足查詢,而後再判斷數據庫緩衝池以及讀緩衝區中是否有緩衝,若是有就返回。沒有就會去執行對應的執行計劃,從磁盤中獲取數據信息算法