如何为此SQL查询创建索引?

时间:2011-07-08 04:27:19

标签: mysql sql

表:

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

1 个答案:

答案 0 :(得分:5)

您需要创建复合索引site + time(是的,订单很重要)。

现在立即删除索引sitetime并创建2:

  1. KEY site (site, time)
  2. KEY time (time)