Optimiser une requete

Signaler
Messages postés
94
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
9 juin 2003
-
Messages postés
94
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
9 juin 2003
-
Bonjour,

J'ai cree une page asp qui permet d'afficher tous les etudiants participant a un module, ma requete me donne la liste que je desire mais le probleme est que ma page met enormement de temps pour se charger voir ne s'affiche pas car le timeout est depasse.

J'aurais donc besoin d'aide pour optimiser ma requete.

J'ai essaye d'utiliser JOIN mais cela me met une erreur comme quoi join n'est pas accepter pqr le compilateur.

Voila ma requete attention elle est costaud :-p

strReq = "select distinct scj.SCJ_STUC, stu.STU_NAME, sce.SCE_BLOK, sce.SCE_CRSC, sce.SCE_MOAC, sce.SCE_STAC from SIPR_SRS_SCJ scj, SIPR_INS_SMR smr, SIPR_CAM_SMO cam, SIPR_SRS_SCE sce, SIPR_INS_STU stu where stu.STU_CODE=sce.SCE_STUC and sce.SCE_SCJC=scj.SCJ_CODE and ((scj.SCJ_SPRC=cam.SPR_CODE and sce.SCE_AYRC='"&Annees&"' and cam.AYR_CODE=sce.SCE_AYRC and cam.MOD_CODE='"& Request.QueryString("cod") &"' and cam.MAV_OCCUR='"& Request.QueryString("occur") &"' and cam.PSL_CODE='"& Request.QueryString("sem")&"') or (smr.SPR_CODE=scj.SCJ_SPRC and smr.SMR_RSLT='D' and smr.AYR_CODE='"&prev_yr&"' and sce.SCE_AYRC='"&Annees&"' and smr.MOD_CODE='"& Request.QueryString("cod") &"' and smr.MAV_OCCUR='"& Request.QueryString("occur") &"' and smr.PSL_CODE='"& Request.QueryString("sem") &"' and ((sce.SCE_STAC = 'RY') or (sce.SCE_STAC = 'C') or (sce.SCE_STAC = 'D') or (sce.SCE_STAC = 'RE') or (sce.SCE_STAC = 'N')) ) or (scj.SCJ_SPRC=cam.SPR_CODE and smr.SPR_CODE=cam.SPR_CODE and sce.SCE_AYRC='"&Annees&"' and cam.AYR_CODE= '"&prev_yr&"' and smr.AYR_CODE=cam.AYR_CODE and smr.MOD_CODE='"&Request.QueryString("cod")&"' and smr.MOD_CODE=cam.MOD_CODE and smr.MAV_OCCUR='"&Request.QueryString("occur")&"' and smr.MAV_OCCUR=cam.MAV_OCCUR and smr.PSL_CODE='"&Request.QueryString("sem")&"' and smr.PSL_CODE=cam.PSL_CODE and ( (smr.SMR_PROC = 'SAS') or (smr.SMR_PROC = '') or (smr.SMR_PROC = 'LAS')or (smr.SMR_PROC = 'RAS')) and ((sce.SCE_STAC <>'P')and (sce.SCE_STAC <>'W')and(sce.SCE_STAC <>'WY')and (sce.SCE_STAC <>'T')and (sce.SCE_STAC <>'S') ))or (scj.SCJ_SPRC=smr.SPR_CODE and sce.SCE_AYRC='"&Annees&"' and smr.AYR_CODE=sce.SCE_AYRC and smr.MOD_CODE='"& Request.QueryString("cod") &"' and smr.MAV_OCCUR='"& Request.QueryString("occur") &"' and smr.PSL_CODE='"& Request.QueryString("sem")&"')) order by stu.STU_NAME "

Merci pour votre aide.

Si vous avez ne serais-ce juste une suggestions sur la maniere de m'y prendre cela m'aiderait beaucoup merci

bergamotte :shy)

3 réponses

Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
6
La requette est étrange car tu répettes plusieurs fois les variables : Request.QueryString("occur") ...

Il faut passer par les innerjoin, regarde le cours ici et travaille la dessus :
- http://sqlpro.developpez.com/indexSQL.html

Romelard Fabrice (Alias F___)
Messages postés
94
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
9 juin 2003

Merci Fabrice

Mais j'ai toujours une question comme tu peux le voir la jointure n'est jamais la meme entre deux tables c'est pour cela que j'utilise des "or"

Est-ce qu'il serait plus pratique de faire plusieurs requetes et ensuite de les regrouper en une seule ?

exemple :

dim req1
req1="select ..."
dim req2
req2="select ..."

dim requete

requete ="select * from req1, req2 where req1.nom=req2.nom"

C'est possible de faire comme ca ?
Et si oui est-ce que ce serait plus rapide a charger bien sur en utilisant des jointures mais en plus en decoupant la requete comme dans l'ensemble ?

Merci pour ton aide, ca m'a ete d'un grand secours

bergamotte :shy)
Messages postés
94
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
9 juin 2003

desolee je voullais dire comme dans l'exemple qui est au dessus de la phrase.

:-p
bergamotte :shy)