Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2771 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème de bdd simple mais pas évident à trouver

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de bdd simple mais pas évident à trouver

n°2032932
cynthia44
Posté le 28-10-2010 à 17:08:35  profilanswer
 

Bonjour à tous,
 
J'ai un problème qui est je le pense assez simple pour une personne relativement expérimentée mais qui est difficile à retrouver dans les archives du site, car pas évident à mettre sous forme de mots-clés
 
J'ai deux tables, dans la première je voudrai qu'une colonne soit la somme des lignes d'une colonne de la seconde table. Je souhaiterai que la colonne de total de la première table soit mise à jour à chaque fois que j'ajoute une nouvelle entrée à la colonne de la seconde table.
 
Une question subsidiaire: si je fais la somme sans passé par une table de total, cad au moment de faire le SELECT, cela ne va t'il pas prendre beaucoup de temps? Je vais en effet avoir des centaines/milliers de lignes à additionner à chaque fois.
 
Par avance merci
Cynth

mood
Publicité
Posté le 28-10-2010 à 17:08:35  profilanswer
 

n°2032977
esox_ch
Posté le 28-10-2010 à 20:07:48  profilanswer
 

Salut,
Je dirais qu'à moins d'être dans certains cas extrêmement spéciaux, il ne faudra pas faire ce que tu cherches à faire.  
 
Mets un index sur ta colonne et fait ton select Count dessus. T'auras pas de soucis.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2033015
Oliiii
Posté le 29-10-2010 à 08:12:54  profilanswer
 

Un index ne va pas vraiment aider si c'est un total et pas un count qu'il faut faire (mais ca peu reduire la quantité de données lue).
 
Mais le fait que c'est une "mauvaise" idée reste vrai dans le sens ou tu dénormalises ta DB.
 
Si tu n'as besoin du total que quelques fois par jour c'est tout a fait acceptable de calculer a la volée (ici le total sur un million de lignes prends 250ms).
Si c'est quelque chose qui tourne en permanence et qu'il te faut un temps de reponse super bas alors que tu as plusieurs millions de lignes tu as deux choix.
 
Si tu fais peu d'insert ou d'update tu peu utiliser un trigger qui va se declencher a chaque insert/update, ce n'est pas vraiment recommandé car au final ca te fera perdre plus de temps a chaque insert/update que pour un select.
 
L'autre solution c'est d'utiliser des resultats intermediaire, si tu fais tres peu d'update et beaucoup d'insert et que tu as le moyen de definir une sequence (une date par exemple) tu peu recalculer le total une fois par jour et additioner ce total a la somme des valeurs d'aujourd'hui.

n°2033161
cynthia44
Posté le 29-10-2010 à 16:06:12  profilanswer
 

Merci beaucoup, je vais suivre la méthode à la volée alors.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème de bdd simple mais pas évident à trouver

 

Sujets relatifs
Problème exécution d'une servlet[VBA] Problème lors de l'ouverture des fichiers
Probleme DIV sur IEProblème POO et execution de fonction
Problème de requêteTrouver quelle appli utilise une ressource / un fichier locké
Probleme sur sedjQuery : problème .append() et $.each()
Probleme avec balise <img/>Problème de décalage et de compatibilité
Plus de sujets relatifs à : Problème de bdd simple mais pas évident à trouver


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR