Bonjour,
j'ai une table d'environ un million d'entrées avec un index composé "Service" d'une cardinalité de 186.
Contrairement à ce que j'attends la requete simple suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CREATE TABLE `pc_services` ( `CIE` varchar(5) NOT NULL, `NO_ABONNE` varchar(20) NOT NULL, `LIEN_DECO` varchar(5) NOT NULL, `CD_SERV` varchar(20) NOT NULL, `DESCPT` varchar(50) DEFAULT NULL, `CS_CTG` varchar(5) NOT NULL, `EST_DEM` smallint(6) DEFAULT NULL, `NO_SERIE` varchar(20) DEFAULT NULL, `DT_INSTAL_FACT` date DEFAULT NULL, `DT_ANNUL_FACT` date DEFAULT NULL, `DT_INSTAL_TECH` date DEFAULT NULL, `DT_ANNUL_TECH` date DEFAULT NULL, KEY `Abonne` (`CIE`,`NO_ABONNE`,`LIEN_DECO`), KEY `service` (`CS_CTG`,`CD_SERV`) USING HASH ) ENGINE=InnoDB DEFAULT CHARSET=latin1
n'utilise pas l'index "Service":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from pc_services as pc_r where pc_r.cs_ctg=41 and pc_r.cd_serv = 'M41T00'
type;select_type;table;id;possible_keys;key;key_len;ref;rows;Extra
ALL;SIMPLE;pc_r;1;service;NULL;NULL;NULL;908238;Using where
alors que
l'utilise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select cs_ctg from pc_services as pc_r where pc_r.cs_ctg=41 and pc_r.cd_serv = 'M41T00'
id;select_type;table;type;possible_keys;key;key_len;ref;rows;Extra
1;SIMPLE;pc_r;index;service;service;29;NULL;908238;Using where; Using index
Une requête ne doit retourner que les valeurs incluses dans un index pour qu'il soit utilisé?!
Merci
Partager