您好,登錄后才能下訂單哦!
如何查看explain中的key_len判斷究竟用了哪個(gè)索引?很多人都不太了解,今天小編為了讓大家更加了解,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會有所收獲的哦。
在一張表里有多個(gè)索引 , 我們where字段里條件有多個(gè)索引的值 , 那么究竟使用的哪個(gè)呢?
我們可以使用explain來查看 , 其中的key_len字段可以看得出來
比如下面這條sql
explain select * from ent_calendar_diary where email='xxxx' and diary_id=1784; +----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+ | 1 | SIMPLE | ent_calendar_diary | NULL | const | PRIMARY,idx_email_stime | PRIMARY | 4 | const | 1 | 100.00 | NULL | +----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+
possible_keys里面有兩個(gè)索引字段 , 但是看key_len 是4個(gè)字節(jié)
備注,key_len 只指示了WHERE中用于條件過濾時(shí)被選中的索引列,是不包含 ORDER BY/GROUP BY
int類型并且not null 是4個(gè)字節(jié) , 因此上面的sql是使用的主鍵索引
explain select * from ent_calendar_diary where email='xxxx'; +----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+ | 1 | SIMPLE | ent_calendar_diary | NULL | ref | idx_email_stime | idx_email_stime | 767 | const | 111 | 100.00 | NULL | +----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
這個(gè)是767個(gè)字節(jié) , varchar(255) not null 255 * 3 +2正好符合 , 因此是使用的email那個(gè)普通索引
CREATE TABLE `ent_calendar_diary` ( `diary_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, `title` varchar(100) NOT NULL, `summary` varchar(500) NOT NULL DEFAULT '', `stime` bigint(11) NOT NULL DEFAULT '0', `ctime` int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`diary_id`), KEY `idx_email_stime` (`email`,`stime`) ) ENGINE=InnoDB AUTO_INCREMENT=1809 DEFAULT CHARSET=utf8
關(guān)于如何查看explain中的key_len判斷究竟用了哪個(gè)索引就分享到這里了,當(dāng)然并不止以上和大家分析的辦法,不過小編可以保證其準(zhǔn)確性是絕對沒問題的。希望以上內(nèi)容可以對大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。