Как я могу создать индекс для этого запроса SQL? - PullRequest
3 голосов
/ 08 июля 2011

таблица:

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 Ответ

5 голосов
/ 08 июля 2011

Вам необходимо создать составной индекс site + time (да, порядок имеет значение).

Удалите оба индекса site и time и создайте 2:

  1. KEY site (site, time)
  2. KEY time (time)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...