1. 程式人生 > 其它 >mysql 查詢優化執行過程

mysql 查詢優化執行過程


mysql 查詢優化執行過程

一。extra:
filesort
using index
using join buffer
distinct


二。type欄位:
null>system>const>eq_ref>ref>ref_or_null>index_merge>range>index>all

null:優化階段分析查詢語句,不要查詢索引和表
systm:
const:只查一行就可以查詢到資料
eq_ref:唯一性索引掃描,主鍵或唯一鍵索引掃描,只有一條記錄與之匹配
ref:非唯一索引掃描,1對多的混合體
ref_or_null:類似ref,還可以搜素值為Null的情況
index_merge:使用了索引合併的優化方法
range:範圍查詢
index:全索引掃描,只遍歷索引樹;full index scan
all:掃描全表full table scan

rows:掃描的行數

select id name from t1 order by id limit 10000000,20; --order by id 主鍵,不要用重複鍵
不帶排序條件,刪除id後,在插入舊id資料,可能造成分頁的資料物理順序和邏輯順序不一致

四。查詢優化器的智慧化:
sql介面
查詢解析器
查詢優化器
執行器:
儲存引擎
buffer pool載入資料到緩衝池
磁碟檔案
undo
redo

強制索引:force index(idx_create_time)

select id from t2 where id>100000 order by createtime desc limit 0,20


五。聯表子查詢:子查詢裡條件要有索引
select id from t2 join (selct id from t2 order by createtime desc limit 10000,20) as t using(id)
單路排序
雙路排序