查看sql的執行計划(是否使用索引等)
方法:使用EXPLAIN
關鍵字
一、例子:
EXPLAIN SELECT * FROM tb_blog t WHERE t.`blog_id` = 3
二、表的索引:
三、查詢結果
四、說明:
table:顯示這一行的數據是關於哪張表的
type:這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為const、eq_reg、ref、range、indexhe和ALL
possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從WHERE語句中選擇一個合適的語句
key: 實際使用的索引。如果為NULL,則沒有使用索引。很少的情況下,MYSQL會選擇優化不足的索引。這種情況下,可以在SELECT語句中使用USE INDEX(indexname)來強制使用一個索引或者用IGNORE INDEX(indexname)來強制MYSQL忽略索引
key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好
ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數
rows:MYSQL認為必須檢查的用來返回請求數據的行數
Extra:關於MYSQL如何解析查詢的額外信息。將在表4.3中討論,但這里可以看到的壞的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,結果是檢索會很慢
五、補充
查看執行計划:EXPLAIN
查看索引:show index from 數據庫名.表名 where column_name like '列名'
建立普通索引:CREATE INDEX index_name(索引名稱) ON 表名 (字段名) ;
刪除索引:drop index index_name(索引名) on 表名 ;