Bonjour à tous,
Voilà, je dois afficher une liste de count sur les items d'une table.
Concrêtement, mon item peut avoir plusieurs status : -2, -1, 0, 1, 2

Est-ce qu'il serait plus rapide de faire une boucle FOR créant des variables compteur quand je rencontre l'état ?
OU
Faire autant de requête count que j'ai de status possible pour mon item ? (Sachant que les statuts sont définies et ne changeront pas)

Nohman

4 réponses


Huggy
Réponse acceptée

Oui, le sql sera toujours plus rapide que de récupérer les enregistrements et de les parcourir

Bonjour Nohman
fais un count par status

SELECT COUNT(*)  AS  cnt , status FROM  matable GROUP BY status

mais tu risques de louper ceux qui n'ont aucun enregistrement
donc tu peux utiliser 5 variables ou un tableau associatif que tu initialises à zéro puis tu y mets le résultat de la requête avec une boucle for

Nohman
Auteur

Donc les multiples count valent mieux qu'une boucle ? (c'était plus ça la question).
C'était plus une question de qui va mieux le gérer plûtot que comment faire ^^. Mais merci quand même.

Si je te dis que 10 millions de produits et 10 catégories. Je veux récupérer le nombre de produits par catégorie. Vas-tu récupérer les 10 millions d'entrée ou 10 entrées? Je comprend que ta question concernait plutôt les performences de la base de données, mais s'imaginer jusqu'où notre application va grandir, c'est pas toujours mauvais. Idéalement, on essaye toujours d'en faire le plus possible du côté du SGBD afin d'éviter de le faire dans notre programme. C'est une des raisons pourquoi on travail pas directement sur un fichier (avec la sérialization).

Ramz.