Aller au contenu

Avis sur structure BDD pour optimiser perf ?


Sujets conseillés

Posté

Bonjour à tous,

Je ne suis pas très affuté sur les questions de perfs sous mysql, au niveau conception de bdd, donc je sollicite un avis. Voila le contexte (c'est un projet, j'ai pas les données, sinon je pourrais tester) :
- une table de 3 000 000 d'enregistrements (des adresses, avec un champ code postal). Pour chaque code postal de la table, j'ai 1000 codes postaux 'compatibles' (differents à chaque fois, 1000 compatibles pour CHAQUE code postal)
- Je veux trouver dans cette table tous les enregistrements 'compatibles' avec un code postal précis. en français, ça donne : "Je veux toutes les adresses dont le code postal est compatible avec le code postal 75 000".

 

A priori j'ai 3 choix :
- 1 - soit je mets un champ text 'compatible'  dans la table, je stocke par enregistrement les 1000 codes postaux compatibles, et je fait un select * where compatible like '%75000%.

- 2- soit j'intercale une table (6600 enregistrement) : Code_postal | liste_compatibilité, et une jointure. Et je like dessus comme le choix 1. Interet, la liste n'est stockée qu'une fois (gain d'espace), mais j'ai une jointure de plus, donc impact sur la perf de la requete ?

3 - je fais un bete select * where code_postal in ('mes 1000 codespostaux compatibles)

Sachant que la perf de la requete est fondamentale, sur un site à fort trafic 100 000 visites/jours. Si je peux avoir un avis éclairé, ça serait super :)

Merci d'avance.

 

PS : Je suis aussi très ouvert à d'autres solution, hein !

 

 

Posté

La première solution me paraît beaucoup être la meilleure solution si tu souhaites mettre en priorité le temps d'execution.

Posté

Merci de la réponse. Un like serait plus rapide qu'un IN, donc... Ok, je vais utiliser ça !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...