Cout requete sql?

Fermé
fidjy5 Messages postés 10 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 27 mai 2008 - 30 avril 2008 à 11:26
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 - 30 avril 2008 à 12:35
Bonjour,
je suis face à un choix et je ne sais pas comment faire. Je dois créér une base annexe afin de réaliser des stats. Cette base est enorme (757tables!!) et je voulais savoir si une requete serait moins couteuse en temps sur 1table contenan beaucoup de champs ou alors sur 1table plus petite mais en faisant des jointures..

Merci d'avance

1 réponse

SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
30 avril 2008 à 12:35
ça dépend... (réponse à la c..., je sais, je sais)
ça dépend de la structure, de ce que tu veux y mettre
l'avantage de faire des jointures, c'est que tu vas diminuer le nombre d'enregistrement de ta table "de tête"
ce qui veut dire que si tu as une table unique, tu vas avoir un nombre d'enregistrement considérable et le temps pour la parcourir va être considérable lui aussi.
si tu as des tables en étage, elles seront moins remplies, mais il faudra du temps pour faire les liens d'une table vers l'autre...
il faut en fait trouver le bon équilibre entre les 2
si par exemple tu as une table A et une table B, avec une jointure entre les 2, il se peut très bien qu'à chaque élément de la table A correspondent plusieurs dizaines d'éléments de la table B
dans ce cas, le système par jointure est préférable car le temps de tarcours de ta table A sera beaucoup moins important que dans l'autre solution
si au contraire tu as une liaison 1-1 entre ta table A et ta table B, il vaut mieux tout rapatrier dans ta table A, car au final, le volume de données est le même, le temps d'exploration de la table A est le même et il te faut rajouter à ça le temps de jointure.
ce que tu peux faire, si tu veux optimiser les temps de réponse, c'est créer des index
0