Bonjour à tous.
Je crée un script ajax d'autocompletion basé sur le code postal.
L'objectif étant que l'utilisateur entre son CP et que le système lui retourne une liste de commune et ceci sur 3 pays.
J'ai donc une table très simple
codepays | code postale | ville
1 2 3 4 5 6 7 8
| CREATE TABLE IF NOT EXISTS `cp_autocomplete` (
`CODEPAYS` char(2) NOT NULL,
`CP` varchar(10) NOT NULL,
`VILLE` varchar(180) NOT NULL,
KEY `CODEPAYS` (`CODEPAYS`),
KEY `CP` (`CP`),
KEY `VILLE` (`VILLE`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
la requête la plus sollicité sera
SELECT CP CodePostal, VILLE Ville FROM `cp_autocomplete` WHERE CP LIKE 750% AND CODEPAYS =" . $country;
J'aimerai réussir à avoir une table performante.
Sachant que cette table ne sera utilisé qu'en lecture j'ai crée la table en Myiam
Mais je ne vois pas quel index choisir, car
Les code postaux ne sont pas unique puisque plusieurs communes peuvent avoir un même code postale
Les villes ne sont pas unique puisque une ville peux avoir plusieurs code postale
Du coup j'ai pensé à un index sur les trois champ, mais il y a t il un interet?
Sinon quand je fait un explain sur une requete j'ai
possible_keys -->CODEPAYS,CP
key -->CP
Extra --> Using index condition; Using where
Dois je simplement metrre un index sur le couple CODEPAYS,CP ?
Partager