Optimiser une requete

cs_bergamotte Messages postés 94 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 9 juin 2003 - 23 mai 2003 à 10:17
cs_bergamotte Messages postés 94 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 9 juin 2003 - 23 mai 2003 à 12:05
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

cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
23 mai 2003 à 11:37
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___)
0
cs_bergamotte Messages postés 94 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 9 juin 2003
23 mai 2003 à 12:03
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)
0
cs_bergamotte Messages postés 94 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 9 juin 2003
23 mai 2003 à 12:05
desolee je voullais dire comme dans l'exemple qui est au dessus de la phrase.

:-p
bergamotte :shy)
0
Rejoignez-nous