使用explain檢視,如下
1、首先建立表test,語句如下
[sql]view plain
copy
create
table
test(a
int,b
varchar
(10),c
varchar
(10));
2、在表中的a,b都建立索引,先後順序是a,b
[sql]view plain
copy
create
index
idx_a_b
ontest(a,b);
3、分別往裡面插入三條資料,插入後結果如下:
4、使用explain查詢,檢視索引使用情況(這裡還可以進行多次其他sql語句的查詢,檢視索引利用情況)
從上面可以看到key_len使用的長度為38(位元組),那麼總的索引長度是多少呢?
下面繼續對錶的建立進行檢視,檢視各個欄位的大小
其中:latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character
從上面這些可以計算索引的長度:
10*3(varchar 10)+3(標記變長)+1(標記可為null)+其他(不清楚)
組合索引的長度10*3+11已經大於38,所以推論只用到了組合索引的一部分。
5、下面是對explain其他的引數進行說明:
table:
這是表的名字。
type:
連線操作的型別。下面是mysql文件關於ref連線型別的說明:
「對於每一種與另乙個表中記錄的組合,mysql將從當前的表讀取所有帶有匹配索引值的記錄。如果連線操作只使用鍵的最左字首,或者如果鍵不是unique或primary key型別(換句話說,如果連線操作不能根據鍵值選擇出唯一行),則mysql使用ref連線型別。如果連線操作所用的鍵只匹配少量的記錄,則ref是一種好的連線型別。」
在本例中,由於索引不是unique型別,ref是我們能夠得到的最好連線型別。
如果explain顯示連線型別是「all」,而且你並不想從表裡面選擇出大多數記錄,那麼mysql的操作效率將非常低,因為它要掃瞄整個表。你可以加入更多的索引來解決這個問題。預知更多資訊,請參見mysql的手冊說明。
本例子中是rang,下面是對type值的解釋
type:告訴我們對錶所使用的訪問方式,主要包含如下集中型別;
◇ all:全表掃瞄
◇ const:讀常量,且最多隻會有一條記錄匹配,由於是常量,所以實際上只需要讀一次;
◇ eq_ref:最多隻會有一條匹配結果,一般是通過主鍵或者唯一鍵索引來訪問;
◇ fulltext:
◇ index:全索引掃瞄;
◇ index_merge:查詢中同時使用兩個(或更多)索引,然後對索引結果進行merge 之後再讀
取表資料;
◇ index_subquery:子查詢中的返回結果字段組合是乙個索引(或索引組合),但不是乙個
主鍵或者唯一索引;
◇ rang:索引範圍掃瞄;
◇ ref:join 語句中被驅動表索引引用查詢;
◇ ref_or_null:與ref 的唯一區別就是在使用索引引用查詢之外再增加乙個空值的查詢;
◇ system:系統表,表中只有一行資料;
◇ unique_subquery:子查詢中的返回結果字段組合是主鍵或者唯一約束;
possible_keys:
可能可以利用的索引的名字。這裡的索引名字是建立索引時指定的索引暱稱;如果索引沒有暱稱,則預設顯示的是索引中第乙個列的名字(在本例中,它是「firstname」)。預設索引名字的含義往往不是很明顯。
key:
它顯示了mysql實際使用的索引的名字。如果它為空(或null),則mysql不使用索引。
key_len:
索引中被使用部分的長度,以位元組計
ref:
列出是通過常量(const),還是某個表的某個字段(如果是join)來過濾(通過key)
的;rows:
mysql所認為的它在找到正確的結果之前必須掃瞄的記錄數。顯然,這裡最理想的數字就是1。
聯合索引ABC的幾種索引利用情況
對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。以下是一些例子 1 select ...
mysql表關聯中的索引使用情況
2015 12 22 17 47 874人閱讀收藏 舉報 mysql知識庫 mysq優化 26 作者同類文章x mysql在某些情況下可以自動優化表關聯的關聯條件,如 通過分析條件中的字段是否有索引,關聯表中的資料總數之類,通過這些條件mysql便可以實現一些自動優化sql語句的功能。以下幾種情況基...
Mysql 聯合索引使用情況測試
建立索引 是表名 a,b,c是建立索引的欄位名 alter table add index sindex a b c 情況一 使用單條件查詢時,索引使用情況如下 只會用到 a 的索引 type ref,key sindex,key len 163,ref const select from wher...