今天是2020-12-30。
一。explain-type
1.顯示查詢使用了何種型別,從最好到最差依次是:system,const,eq_ref,ref,range,index,all
2.需要保證查詢至少到range級別,最好能到ref
3.system:表只有一行記錄,等於是系統表,是const型別的特例,平時不會出現
4.const:表示通過一次索引就找到了資料,用於比較主鍵或者唯一索引。比如我們將主鍵置於where子句中,mysql就能將查詢轉為乙個常量
5.eq_ref:唯一性索引掃瞄,對於每個索引鍵,表中只有一行記錄與之匹配,常用於主鍵索引或者唯一索引的掃瞄
6.ref:非唯一性索引掃瞄,會返回匹配某個值的所有行。
7.range:只檢索指定範圍內的行,使用乙個索引來選擇行,會在key列顯示使用了哪個索引。range一般會出現在使用了between、>、《的where子句時,會比全表掃瞄要好,因為range只需要開始於索引的某一點然後結束於另一點,不用去掃瞄全部索引。
8.index:全索引掃瞄,只掃瞄全部索引,而不是去掃瞄全部資料。
二。explain-possible_key
顯示可能應用在這張表上的乙個或多個索引。查詢涉及到的字段上若存在索引,則會被列出,但不一定會被使用。
三。explain-key
實際使用到的索引,如果沒有使用索引,則為null。查詢中若使用到了覆蓋索引,則該索引僅會出現在key列表中。
覆蓋索引的意思是:查詢時需要返回的字段與使用到的索引包含的字段一致,即為覆蓋索引,簡單來說就是通過使用索引就能得到全部資料,不需要根據索引查出的資料再回表查另外的資料。查詢中若使用到了主鍵索引就只用掃瞄一次b+樹即可得到資料。如果查詢使用了非主鍵索引,那麼就要先通過非主鍵索引定位到它對應的主鍵索引的值,再根據主鍵索引的值取定位整行記錄,這樣就要掃瞄兩次b+樹,即我們通常說的回表查詢了一次。所以說如果我們在查詢時如果不能使用非主鍵索引查出全部資料,那麼就要再根據它對應的主鍵索引的值回表查詢需要的資料
四。explain-key_len
表示查詢中使用到的索引的位元組數,查詢中越多的字段使用到了索引,精度越高,這個值也會越大
五。explain-ref
顯示索引的的哪一列被使用了,可能是乙個常數–以const表示,表示哪些列和常數被用於查詢索引列上的值。如果是某一列被用到,就是以資料庫名.表名.列名顯示這一列被使用。
六。explain-rows
根據表的資訊和查詢時使用索引的情況,估計出查詢到資料所需讀取的記錄行數
尚矽谷Mysql高階day3 p21 23
今天是2020 12 29 explain關鍵字,寫在sql語句最前面,執行sql語句後可以顯示該語句的執 況 一。explain id select查詢的序列號,包含一組數字,表示查詢中執行select子句或操作表的順序,有如下情況 1.id相同,執行順序由上至下 2.如果使用了子查詢,id不同時...
尚矽谷Mysql高階day12 p54 62
今天是2021 1 10。1.偏向於myisam引擎,開銷小,加鎖快,發生鎖衝突的概率較高。不會產生死鎖,加鎖的粒度較大,所以併發效率也較低 2.show open tables 檢視所有庫的鎖 3.lock table 表名 read write,給表新增讀鎖或者寫鎖 4.會話s1對book表加了...
尚矽谷之MySQL基礎
持久化 persistence 把資料儲存到可掉電式儲存裝置中以供之後使用。持久化的大多數時候是將記憶體中的資料儲存在資料庫中,當然也可以儲存在磁碟檔案 xml資料檔案中。方便管理資料 例如 快速的檢索等 db 資料庫 database 即儲存資料的 倉庫 它儲存了一系列有組織的資料。dbms 資料...