Voir les traceurs | Evolutions | Exporter au format CSV

Date :
27/11/2013 09:45
Priorité :
3
État :
Open
Proposé par :
francois raynaud (fraynaud)
Confié à :
Nobody (None)
Version cible :
à déterminer
Résumé :
Optimisation des requêtes dans les traitements de statistiques

Description détaillée
Les requetes statistiques sont lancées sur la base d'une requête de l'agrégat recherché (voie, bureau, nationalité ...) et pour chaque élément de l'agrégat , il est exécuté 3 requêtes :
- le total général par agrégat dans la table électeur
- le total des électeurs masculin par agrégat
- le total des électeurs femme par agrégat
Cette méthode est coûteuse en ressource et multiplie les requêtes :
Exemple pour 30 bureaux = 30 * 3 + 1 = 91 requêtes

Il serait plus économe de lancer une requête agrégat comme suivant (pour les voies) :
select count(sexe) as total,
sum(CASE when sexe ='M' then 1 else 0 end) as masculin,
sum(CASE when sexe ='F' then 1 else 0 end) as feminin
from electeur
group by code_voie
order by code_voie
Message  ↓
Date : 04/12/2013 12:41
Expéditeur : Florent MICHON

Voir le ticket https://adullact.net/tracker/index.php?func=detail&aid=6995&group_id=434&atid=1200


Date: 27/11/2013 08:30
Expéditeur: francois raynaud

Avec 2000 voies, il y a pres de 6000 requetes envoyées au serveur postgres :


Ne serait il pas pu simple de faire une stats sur la base d une seule requete :

select count(sexe) as total,
sum(CASE when sexe ='M' then 1 else 0 end) as masculin,
sum(CASE when sexe ='F' then 1 else 0 end) as feminin
from electeur
group by code_voie
order by code_voie

La réponse est alors immédiate

Pas de documents joints

Champ Ancienne valeur Date Par
summaryaccelerer le temps de traitement de statistiques04/12/2013 12:41Florent MICHON
Version cibleNone04/12/2013 12:41Florent MICHON
FEDER Powered By FusionForge Collaborative Development Environment Charte d'utilisation / Nous contacter / Mentions légales Haut de page