IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

requête SQL (oracle) très lente en asp, mais pas dans sql+


Sujet :

ASP

  1. #1
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Points : 120
    Points
    120
    Par défaut requête SQL (oracle) très lente en asp, mais pas dans sql+
    bjour,

    Voici mon problème.
    J'ai une requête assez importante (encore que) qui va tapper dans une base oracle.
    Lorsque j'exécute cette reqête via un outils tel que sql+, celle ci met pas plus de 5 secondes pour s'éxécuter, mais via l'asp, cela peut aller parfois à plus de 50 secondes !!!

    Voici cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    otSql="select oti.oidresponsable,oti.oiduser,otr.oidobjectrelation site,oti.omdescription,oto.otmodel,oto.oidobject,oto.otinternalnumber,oto.otstatus,oto.oddateentry from otobject oto,otincident oti, otobjectrelation otr"
    otSql=otSql &" where " & ressource &" oti.oidobject=oto.oidobject " & etat & " and oto.oidobject=otr.oidobject"
    otSql=otSql & " and otr.oidobjecttype=3004 " & site & " and otr.oidobjectRelationtype=201 and oto.oidobjecttype='3004' " & user
     
    'un petit rajout de dernière minute, refaire la requête pour plus de rapidité
    otSql=OtSql & " and oto.oidobject NOT IN (select ot.oidobject from otobject ot,otobject otob"
    otSql=otSql & " where otob.oidobjecttype=3004 and ot.oidobjecttype=3004 and otob.oidobject=ot.oidobjectfather)"
     
    'otSql=otSql & " order by oto.oidobject DESC"
     
    'response.write otSql
     
    set oRec=oPam.ogbAdoData.Execute(otsql)
     
     
    response.write oRec.RecordCount & " résultats trouvés"
     
    if (oRec.EOF and oRec.BOF) then
     
     
     response.write "<tr><td colspan=7 align=center>Aucun résultat ne correspond à votre requête</td></tr>"
     
     else
     
    while NOT oRec.EOF
     
    	'on récupère la ressource
     
    	otSqlressource="select otmodel from otobject where oidobject='"& oRec("oidresponsable") &"' "
    	set oRecressource=oPam.ogbAdoData.Execute(otsqlressource)
     
    	'on récupère le user
     
    	otSqluser="select otmodel from otobject where oidobject='"& oRec("oiduser") &"' "
    	set oRecuser=oPam.ogbAdoData.Execute(otsqluser)
     
    	'on récupère le site
     
    	otSqlsite="select otmodel from otobject where oidobject='"& oRec("site") &"' "
    	set oRecsite=oPam.ogbAdoData.Execute(otsqlsite)
     
     
     
    response.write "<font face=verdana size=2><tr><td><a href=../Encours/detail.asp?oidobject=" & oRec("oidobject") & "&oiduser="& orec("oiduser") &" target=_blank>"& oRec("otinternalnumber") &"</a></td><td>" & orec("otmodel") &"</td><td>"& orecuser("otmodel") &"</td><td>" & orec("otstatus") & "</td><td>"& orecsite("otmodel") &"</td><td>" & oRecressource("otmodel") &"</td><td>" & orec("oddateentry") &"</td></tr></font>"
     
     
     oRec.Movenext
     
     Wend
     
    end if
    Je sais qu'on peut largement l'optimiser, j'en suis très conscient, je le ferais pas la suite. Mais j'aimerais comprendre les raisons qui donnent ces différences de temps !
    Pour aller tapper ds la BD oracle, j'utilise le lien odbc oracle 9.2

    j'ai essayé de virer les différentes boucles, afin de ne laisser que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    otSql="select oti.oidresponsable,oti.oiduser,otr.oidobjectrelation site,oti.omdescription,oto.otmodel,oto.oidobject,oto.otinternalnumber,oto.otstatus,oto.oddateentry from otobject oto,otincident oti, otobjectrelation otr"
    otSql=otSql &" where " & ressource &" oti.oidobject=oto.oidobject " & etat & " and oto.oidobject=otr.oidobject"
    otSql=otSql & " and otr.oidobjecttype=3004 " & site & " and otr.oidobjectRelationtype=201 and oto.oidobjecttype='3004' " & user
     
    'un petit rajout de dernière minute, refaire la requête pour plus de rapidité
    otSql=OtSql & " and oto.oidobject NOT IN (select ot.oidobject from otobject ot,otobject otob"
    otSql=otSql & " where otob.oidobjecttype=3004 and ot.oidobjecttype=3004 and otob.oidobject=ot.oidobjectfather)"
     
    set oRec=oPam.ogbAdoData.Execute(otsql)
    mais le temps d'éxécution est sensiblement le même....

    Help !! Je ne comprend pas !

    merci d'avance, de votre aide !

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,
    Quelle requete mets tu dans sql+ (La version sans les variables)?
    Ecrit comme ça j'ai un peu de mal à lire...
    Essai d'ouvrir ton recordset ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rs.CursorLocation = 3
    rs.CursorType = 0
    rs.LockType = 1
    C'est le plus rapide que j'ai trouvé. Attention, il ne fait que lire.

  3. #3
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Points : 120
    Points
    120
    Par défaut
    salut, et merci de ta réponse.
    La requête que je met ds sql+, c'est celle que je demande d'afficher ds la page asp avec response.write otsql

    donc, elle a ainsi les variables.

    Je vais essayer lundi de rajouter ces paramètres que tu m'as donné, et je te donnerais le résultat

    merci

Discussions similaires

  1. Oracle SQL Developer très lent !
    Par Nanette1975 dans le forum Sql Developer
    Réponses: 6
    Dernier message: 10/05/2012, 17h36
  2. erreur de requête SQL avec ASP mais pas dans Access
    Par csszzen dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/03/2007, 09h07
  3. SQL Server très lent comparé à Mysql
    Par berceker united dans le forum Installation
    Réponses: 14
    Dernier message: 14/12/2006, 20h53
  4. Generer du xml via SQL(oracle) avec de l'asp
    Par jpg dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 03/08/2004, 12h36
  5. SQL Server trés lent
    Par arwen dans le forum MS SQL Server
    Réponses: 18
    Dernier message: 07/11/2003, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo