如何为这个SQL查询创建索引?

时间:2022-03-10 03:55:32

table:

表:

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 query:

sql查询:

select * from `deal` where time>0 && site=8

I create index:time for this query,

我创建了索引:这个查询的时间,

but why this query always using index: site?

但是为什么这个查询总是使用索引:站点?

explain select * from `deal` where time>0 && site=8

output:

输出:

table    type    possible_keys   key    key_len    ref   rows   Extra

deal     ref     site,time       site   4          const 1      Using where

1 个解决方案

#1


5  

You need to create composite index site + time (yes, order matters).

您需要创建复合索引站点+时间(是的,顺序很重要)。

So delete both indexes site and time now and create 2:

因此,现在删除索引站点和时间并创建2:

  1. KEY site (site, time)
  2. 关键网站(网站,时间)
  3. KEY time (time)
  4. 关键时间(时间)

#1


5  

You need to create composite index site + time (yes, order matters).

您需要创建复合索引站点+时间(是的,顺序很重要)。

So delete both indexes site and time now and create 2:

因此,现在删除索引站点和时间并创建2:

  1. KEY site (site, time)
  2. 关键网站(网站,时间)
  3. KEY time (time)
  4. 关键时间(时间)