Requete(s) MYSQL

Petite quesion d’optimisation…

Vaut il mieux une seule requète sur une table de 100000 enregistrements ou 1 requète avec des alias sur 5 tables de 20000 enregistrements ?

Car je vais avoir des SELECT à faire sur des types de données identiques, mais dont le contenu peut être séparé…

Je vais avoir des requètes qui vont devoir fouiller parmis les 100000 enregistrements, et d’autres que parmis 20000…

Vaut il mieux chercher tout le temps dans une seule table de 100000 ou l’exploser en tables distinctes ?

Si il n’y a qu’une requète, chercher dans 5 tables est il plus long que dans une seule ?

Y a t il une différence sensible entre faire un SELECT sur 100000 enregistrements et 5 fois moins ?

Ces chiffres sont là à titre indicatif, c’est surtout sur le principe que je cherche une réponse et non pas sur ce cas particulier.

Merci :wink:

Bein en toute logique plus tu a d’enregistrement dans une table, plus c’est long a faire une recherche, meme si tu as des index bien choisis etc …

Apres je sais pas trop, mais si tu peux test les 2 solutions, mais je pense que 5 tables bien indexée, dans une requete bien optimisé repondra plus vite qu’une requete sur une grosse base qui va te bouffer dde la ram a outrance :stuck_out_tongue:

Regle bien aussi tes buffers pour accelerer tes requetes.

En discutant vite fait, on me dit (sans garantie) qu’à priori une requète sur 5 tables sera traité par le serveur comme 5 sous requètes sur chaque table, et donc comme si je faisais 5 requètes au lieu d’une…

Du coup si c’est bien le cas, je pense qu’on perd plus à multiplier les requètes qu’à diviser le nombre d’enregistrement parmis lesquels on effectue sa recherche…

sinon au niveau des champs dans les tables ca serai exactement la même chose…

Par exemple j’aurai soit :

une table “fruits et légumes” avec un id, le nom du légume et son prix

ou

une table “fruits rouges” avec un id, le nom du légume et son prix
une table “légumes verts” avec un id, le nom du légume et son prix

sachant que j’aurai des requètes à passer sur l’ensemble “fruits et légumes” qui devraient être plus rapides si je n’ai qu’une seule table regroupant tout, mais aussi des requètes uniquement sur “légumes vert” qui seront plus longue si je les passe sur la table “fruits et légumes”.

Pourquoi ne pas rajouter une colonne ‘type’ -indexée- précisant ‘légume vert’ dans ta grosse table?

bonne idée

Ouep, c’est pour ça qu’il faudrait tester, mais 100 000 lignes c’est pas tres tres gros si tu as pas beaucoup de champs.

donc c’est pas vraiment problematique en terme de performance, sauf si ta requete met 5 minutes :stuck_out_tongue:

Mais la solution d’ajouter le type est bien pour faire de l’indexage, ce qui fait que ça reviendra a 1 table et 5 index et la les perfs seront au RDV