MySQL創(chuàng)建索引/判斷索引是否生效的問題
更新時間:2023年08月31日 11:07:13 作者:AbsoluteCuteness
這篇文章主要介紹了MySQL創(chuàng)建索引/判斷索引是否生效的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
MySQL創(chuàng)建索引
現(xiàn)有數(shù)據(jù)表 jingjia_info,共658行數(shù)據(jù):
SELECT * FROM jingjia_info;
查詢表中使用的索引
show index from 表名; eg. show index from jingjia_info;
查看查詢語句中是否使用了索引
方式一
EXPLAIN + 查詢語句
EXPLAIN SELECT * FROM jingjia_info;
EXPLAIN列的解釋:
- table:顯示這一行的數(shù)據(jù)是關(guān)于哪張表的。
- type:這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為const、eq_reg、ref、range、index和ALL。
- possible_keys:顯示可能應(yīng)用在這張表中的索引。如果為空,沒有可能的索引??梢詾橄嚓P(guān)的域從WHERE語句中選擇一個合適的語句。
- ==key: 實際使用的索引。如果為NULL,則沒有使用索引。==很少的情況下,MySQL會選擇優(yōu)化不足的索引。這種情況下,可以在SELECT語句中使用USE INDEX(indexname)來強制使用一個索引或者用IGNORE INDEX(indexname)來強制MySQL忽略索引。
- key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好。
- ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數(shù)。
- rows:MySQL認(rèn)為必須檢查的用來返回請求數(shù)據(jù)的行數(shù)。
- Extra:關(guān)于MySQL如何解析查詢的額外信息。
- extra列返回的描述的意義:
方式二
使用時間檢測
# 運行時間檢測 set profiling=1; SQL; # 查看執(zhí)行時間 show profiles;
創(chuàng)建新索引
CREATE INDEX index_name ON 表名(字段1,字段2,…);
CREATE INDEX index_info ON jingjia_info(jingjia_no,); # jingjia_no 是一個id字段
使用 EXPLAIN 查詢jingjia_no
EXPLAIN SELECT jingjia_no FROM jingjia_info;
查詢一個未加索引的普通字段 ggfb
EXPLAIN SELECT ggfb FROM jingjia_info;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
my.cnf(my.ini)重要參數(shù)優(yōu)化配置說明
本文針對mysql不同存儲引擎,MyISAM與Innodb進行了講解如何進行my.cnf(my.ini)的參數(shù)優(yōu)化2018-03-03MySQL Hints控制查詢優(yōu)化器的選擇問題小結(jié)
MySQL Hints是一種強大的工具,可以幫助我們解決復(fù)雜的查詢性能問題,然而,它們應(yīng)該謹(jǐn)慎使用,并且總是與徹底的測試和驗證相結(jié)合,本文介紹MySQL Hints控制查詢優(yōu)化器的選擇,感興趣的朋友一起看看吧2024-06-06