表:
CREATE TABLE `deal` (
`id` int(11) NOT NULL default '0',
`site` int(11) NOT NULL default '0',
`time` bigint(13) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `site` (`site`),
KEY `time` (`time`,`site`)
) TYPE=MyISAM
sql查询:
select * from `deal` where time>0 && site=8
我为此查询创建了索引:time
,
但是为什么这个查询总是使用索引:site
?
explain select * from `deal` where time>0 && site=8
输出:
table type possible_keys key key_len ref rows Extra
deal ref site,time site 4 const 1 Using where
答案 0 :(得分:5)
您需要创建复合索引site + time
(是的,订单很重要)。
现在立即删除索引site
和time
并创建2:
KEY site (site, time)
KEY time (time)