Bonjour, je préviens, je ne suis pas un spécialiste en SQL... mais pas newbie non plus.
Je cherche la meilleure solution pour gérer un compteur de 'vues' (nombre de vues d'une fiche/table).
Actuellement, le champ 'compteur de vues' est dans la table générale avec toutes les informations spécifiques à afficher. Les mises à jour de ce compteur sont donc nombreuses (sur un site qui tourne pas trop mal...). Mais en terme de performance, je me demande s'il ne serait pas plus judicieux de gérer ce compteur de visites/lectures dans une table séparée afin de minimiser les UPDATE sur la "grosse" table.
Le type de requête se passe ainsi pour l'instant :
UPDATE latable SET counter = counter+1 WHERE ID = $ID
et juste ensuite (3 petits points pour simplifier - plus de 30 champs en tout sur plusieurs tables concernées):
SELECT ID,terme,champx1,champx2,...,champx25, counter, champx26,... FROM latable WHERE ID = $ID
Le champ 'counter' est de type INT 8 non null unsigned avec valeur par défaut à 0 : il y a peut-être déjà quelque chose à optimiser de ce côté? Un MEDIUMINT (quelle taille?) devrait suffire pour quelques temps... (des pages sont à plus d'1 million de vues)
Comme ce champ counter est dans la table générale, la table est mise à jour "constamment" et je pense que ça dégrade les perfs. Le reste des champs est mise à jour une fois de temps en temps (très long temps... ).
Ne serait-il pas plus rapide de créer une table annexe qui ne dispose que deux champs : ID et counter? Avec un index sur ID et peut-être sur counter, quoique je n'en vois pas l'utilité mais c'est là où les limites de mes connaissances sont atteintes?
UPDATE latablecounter SET counter = counter+1 WHERE ID = $ID
(ainsi, on ne touche pas à 'latable' en écriture)
puis (je simplifie au max, je n'ajoute pas tous les a.) :
SELECT ID,terme,champx1,champx2,...,champx25, champx26,..., b.ID, b.counter FROM latable a, latablecounter b WHERE a.ID = $ID AND b.ID = $ID
Sur cette dernière requête, il y a peut-être du mieux à apporter aussi.
Exemple de page : http://www.aquaportail.com/fiche-poi...nio-rerio.html (le compteur de vues est planqué tout en bas, juste avant les commentaires disqus).
Merci pour vos conseils avisés.
Partager