3
table:comment puis-je créer un index pour cette requête 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
requête SQL:
select * from `deal` where time>0 && site=8
Je crée l'index: time
pour cette requête,
mais pourquoi cette requête en utilisant toujours l'index: site
?
explain select * from `deal` where time>0 && site=8
sortie:
table type possible_keys key key_len ref rows Extra
deal ref site,time site 4 const 1 Using where
grâce zerkms, 'le site KEY (site, heure)' peut remplacer complètement la 'KEY site (site) '? (J'ai aussi besoin de 'select * from deal où site = 123') – Koerr
@Zenofo: oui, on l'appelle" le plus à gauche ". Donc, avec l'index 'a + b + c' vous n'avez pas besoin d'avoir les index' a' et 'a + b', car il les couvre avec sa partie gauche – zerkms