Je n'arrive pas à trouver beaucoup d'informations à ce sujet.SQL COUNT (col) vs colonne de journalisation supplémentaire ... efficacité?
J'ai une table pour enregistrer les commentaires des utilisateurs. J'ai une autre table pour enregistrer les goûts/dégoûts des autres utilisateurs pour chaque commentaire. Par conséquent, lors de la sélection de ces données à afficher sur une page Web, il existe une requête complexe nécessitant des jointures et des sous-requêtes pour compter tous les likes/n'affets. Mon exemple est une personne de requête gentiment m'a aidé ici pour obtenir les résultats requis:
SELECT comments.comment_id, comments.descr, comments.created, usrs.usr_name,
(SELECT COUNT(*) FROM comment_likers WHERE comment_id=comments.comment_id AND liker=1)likes,
(SELECT COUNT(*) FROM comment_likers WHERE comment_id=comments.comment_id AND liker=0)dislikes,
comment_likers.liker
FROM comments
INNER JOIN usrs ON (comments.usr_id = usrs.usr_id)
LEFT JOIN comment_likers ON (comments.comment_id = comment_likers.comment_id
AND comment_likers.usr_id = $usrID)
WHERE comments.topic_id=$tpcID
ORDER BY comments.created DESC;
Cependant, si j'ajouté un goûts et dégoûts colonne à la table des commentaires et créé un déclencheur pour incrémenter automatiquement/décrément ces colonnes comme likes sont insérées/supprimées/mises à jour dans la table LIKER, alors l'instruction SELECT serait plus simple et plus efficace que maintenant. Je demande, est-il plus efficace d'avoir cette requête complexe avec les COUNTS ou d'avoir les colonnes et les déclencheurs supplémentaires?
Et pour généraliser, est-il plus efficace de COMPTER ou d'avoir une colonne supplémentaire pour le comptage lors d'une interrogation régulière?
double possible [Pourquoi les gens enregistrent-ils le nombre de X dans la colonne de la nouvelle base de données?] (Http://stackoverflow.com/questions/6883352/why-do-people-saves-count-of-x-in-new-databases-column) –
S'il vous plaît voir le doublon suggéré. Question très similaire - Il est beaucoup plus efficace de stocker les agrégats plutôt que de les recalculer sur chaque page vue. –
Oui merci de m'avoir mis en relation, d'abord de vraies informations que j'ai pu lire sur le sujet. – Psyrus