Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

1 utilisateur anonyme et 11 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

requête SQL à optimiser

 
n°6567
manuhard
Profil : Membre
Posté le 06-02-2004 à 11:27:06  profilanswer
 

Bonjour,
 
J'ai une requête SQL à optimiser.
 
Ma question porte en particulier sur les clauses IN, NOT IN, et OR, AND.
Dans quelle mesure peut-on optimiser une requête avec ces clauses ?
 
<code>
 
SELECT DISTINCT  
       adhe_no_bull,
       Cour_dat_eff,
       Cour_nom_adhes,
       cour_cod_prod,
       cour_cod_part,
       cour_cod_aven,
       DOCUMENTS.*
  FROM COURRIERS,
       DOCUMENTS,
       Adhesions
 WHERE DOCU_CODE = COUR_COD_AVEN
   AND DOCU_TYPE = COUR_COD_PROD
   AND ADHE_NO_ADHES = COUR_NO_ADHES
   AND COUR_COD_PROD = 72
   AND COUR_COD_AVEN ='INIT'
   AND adhe_dat_cpta IS NOT NULL
   AND (
      (adhe_flg_transfert=0)  
     OR (adhe_flg_transfert=1 AND adhe_cont_recep IS NOT NULL)
     )
   AND adhe_no_bull NOT IN  
       ( SELECT distinct adhe_no_bull
          FROM adhesions,
              evenements
         WHERE adhe_no_adhes = even_no_adhes
           and adhe_cod_prod = even_cod_prod
           AND adhe_cod_prod = 72
           AND (   adhe_dat_cpta IS NULL
                OR (adhe_flg_transfert = 1 AND adhe_cont_recep IS NULL)  
                OR even_dat_val IS NULL)  
              )
 
</code>

n°6584
biozy
Profil : Membre
Posté le 09-02-2004 à 13:23:04  profilanswer
 

Deux chose vont plomber les perfs de ta requete (surtout si le SGBD que tu utilises ne possede pas d'optimiseur)
- les clauses OR
- la sous requete
 
Regarde sur google les regles "SARG". Ces regles definissent les choses a faire et ne pas faire pour les perfs de ta requette....


Aller à :
Ajouter une réponse