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

SQL Oracle Discussion :

requete tourne en boucle


Sujet :

SQL Oracle

  1. #1
    Membre habitué Avatar de hammag
    Profil pro
    Inscrit en
    Février 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 511
    Points : 145
    Points
    145
    Par défaut requete tourne en boucle
    salut,

    quand je lance cette requête elle tourne en boucle infinie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select * from  PROD LIP2 
     
    WHERE LIP2.PROCESS_INSTANCE = 123 
    AND LIP2.FLAG = 'Y' 
    AND LIP2.COMPANYID IN (SELECT COMPANYID 
                           FROM COMPANY
                           WHERE SETID = 'xxx'
    					   )
    l'exécution de l a1ère partie de la requête prend 9 seconde et renvoie 435 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select * from  PROD LIP2 
     
    WHERE LIP2.PROCESS_INSTANCE = 123
    AND LIP2.FLAG = 'Y'
    et quand je lance l'exécution de la partie qui est dans IN tout seule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT COMPANYID 
                           FROM COMPANY
                           WHERE SETID = 'xxx'
    elle renvoie 31500 lignes.
    mais comme j'ai dis au début de mon post l'exécution de toute la requête ne marche pas, elle tourne en boucle infinie.
    je ne pense pas que le problème vient du nombre de lignes dans la table parce que ca marchait avant.
    REM:la version de oracle est 10g

    merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    As-tu ssayé de remplacer ton IN par un EXISTS ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT  * 
    FROM    PROD LIP2 
    WHERE   LIP2.PROCESS_INSTANCE = 123 
        AND LIP2.FLAG = 'Y' 
        AND EXISTS
            (   SELECT  1
                FROM    COMPANY CMP
                WHERE   CMP.SETID = 'xxx'
                    AND CMP.COMPANYID = LIP2.COMPANYID
            )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Comme indiqué dans l'autre sujet, pour savoir ce qui se passe il FAUT à minima les plans d'exécution et mieux la TRACE du serveur.

    Suivez le tutorial pour récupérer les informations nécessaires.

    Si vous rencontrez des problèmes n'hésitez pas à demander ici, mais celà ne sert à rien de multiplier les sujets sur le même problème tant que vous ne fournissez pas ce qu'on vous demande.

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    En SQL une requête ne tourne jamais en boucle infinie, elle peut prendre beaucoup de temps dans certaines cases ou elle peut être bloquée (sauf select).

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 17
    Points : 20
    Points
    20
    Par défaut re: requete tourne en boucle
    une requête SQL ne tourne jamais en boucle, cela vous avez surement un problème de performance (la première requête 435 lignes en 9s c'est comme même trop !!), essayes d'ajouter des index sur PROCESS_INSTANCE et FLAG s'ils ne sont pas indexés,si ca marche pas il faut surement regarder les plan d'exécution pour savoir comment votre requête est traitée (explan plan ca vous donnera déjà une idée).

Discussions similaires

  1. Pourquoi mon processus tourne en boucle ?
    Par cladsam dans le forum POSIX
    Réponses: 6
    Dernier message: 09/06/2011, 16h07
  2. Requete SQL dans boucle while
    Par vince_grenoblois dans le forum MS SQL Server
    Réponses: 18
    Dernier message: 04/08/2006, 20h41
  3. [FLASH 8] Un SWF tourne en boucle : je ne veux pas !
    Par Olish dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 24/04/2006, 11h36
  4. Réponses: 1
    Dernier message: 19/12/2005, 13h00
  5. Pb de rand() qui tourne en boucle
    Par MadChris dans le forum MFC
    Réponses: 3
    Dernier message: 26/06/2004, 16h24

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