我有一個表進行查詢時,使用Where期間解釋了MySQL查詢
EXPLAIN SELECT `id`
FROM `tblsender`
WHERE `userid` = '6'
AND `astatus` = '1'
AND `sender` = 'ABCDEF'
我甚至在所有可能的方式建立索引後得到USING WHERE
。這是我的最終表結構代碼。
CREATE TABLE IF NOT EXISTS `tblsender` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`sender` varchar(6) NOT NULL,
`astatus` tinyint(1) NOT NULL DEFAULT '0',
`userid` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `astatus` (`astatus`),
KEY `userid` (`userid`),
KEY `sender` (`sender`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=22975 ;
我甚至嘗試全文爲sender
列,但仍然沒有運氣,我也嘗試過所有where clause
列索引。
ALTER TABLE `tblsender` ADD INDEX (`sender` , `astatus` , `userid`) ;
還在得到using where
,我該如何正確索引這張表。
編輯:解釋上述結構的輸出。
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE tblsender ref astatus,userid,sender astatus 1 const 1 Using where
,並解釋輸出的所有3列在一起
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE tblsender ref astatus,userid,sender,sender_2 astatus 1 const 1 Using where
請參閱:http://stackoverflow.com/questions/9533841/mysql-fix-using-where – zed
當所有三列包含在單個索引中時,Pleaae會顯示來自'EXPLAIN'的輸出。 –
@ Michael-sqlbot,對於遲到的回覆感到抱歉,因爲我有一些互聯網連接問題。我更新了我的問題。 – yuri1000