Optimisation requetes imbriquées - SQL/NoSQL - Programmation
Marsh Posté le 15-03-2007 à 16:09:07
Code :
|
c'est pas plus simple comme ça ?
Marsh Posté le 15-03-2007 à 16:19:05
bah non, parceque là tu prends toutes les cotisations de l'année 2007, sans différencier les anciens abonnés des nouveaux.
Par contre :
select count(*) as var
from cotis c1
where c1.annee = ANNEE
and c1.montant_regle > 0
and not exists (select null form cotis c2 where c2.annee < c1.annee and c2.num = c1.num)
Déjà ça évite de faire X sous-requêtes.
Autre solution (mais il y a une légère différence, puisqu'un ancien abonné qui n'a rien payé l'année précédente est considéré comme nouveau, je ne sais pas si c'est possible et désiré)
select count(*)
from (
select num, min(annee) annee
from cotis
where montant_regle > 0
group by num
)
where annee = ANNEE
Marsh Posté le 15-03-2007 à 16:49:00
Merci bcp MagicBuzzz, ca marche nickel !
Et pis merci HFR, ca marche mieux que des forums spécialisés Access...
Marsh Posté le 15-03-2007 à 15:53:01
Bonjour,
J'ai un probleme d'optimisation sur une requete imbriquée.
Tout d'abord, ce que je veux ce sont les nouveaux adhérents, c'est à dire ceux qui n'etaient pas presents dans la table Cotis en 2005, ni en 2006, mais qui sont presents en 2007 et qui ont deja regle qq chose en 2007.
Voici ma requete :
Ca fait comme si la requete tournait en boucle, elle met du temps, et me sort bien le resultat au bout de 15 ou 20 minutes...
Du coup, comment optimiser ça pour que ça soit plus rapide ?
(Ma table Cotis contient 70.000 enregistrements...)
Merci...
---------------
Le Saoumfa