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

Langage SQL Discussion :

requete lente avec TOP n et NOT IN


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut requete lente avec TOP n et NOT IN
    Bonjour à vous.

    j'expose mon probléme: j'ai une requete sur une table qui me renvoi des lignes d'enregistrement que je mets dans un tableaux pour les exploiter.

    J'ai voulu passer par un select top 1 ... where monchanp not in (select top n...).

    Ca marche bien mais j'ai un temps de reponse beaucoup plus long pour me retourner mon enregistrement seul.

    Est-ce normal ???

    premiere requete rapide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT meschamp FROM matable 
    WHERE monchamp IN (SELECT monchamp FROM matable WHERE monchamp2=mavariable)
    ORDER BY monchamp3
    Deuxieme requete ou je recupere l'enregistrement n+1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT TOP 1 meschamp FROM matable 
    WHERE monchamp IN (SELECT monchamp FROM matable WHERE monchamp2=mavariable)
    AND monchamp NOT IN (SELECT TOP n monchamp FROM matable 
    WHERE monchamp IN (SELECT monchamp FROM matable WHERE monchamp2=mavariable)
    ORDER BY monchamp3)
    ORDER BY monchamp3
    J'aimerais savoir si c'est normal que la 2' requete mette 3 à 4 s et la premiere que 1 s. la table contient environ 500 lignes et la premiere requete me ramene moins de 20 lignes d'enregistrement.

    Merci de vos réponse.

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Oui, c'est normal : tes conditions IN et NOT IN doivent être évaluées.
    Tu as un index sur TonChamp ?

    Si tu n'en as pas, ça veut dire que tu dois lire la table en entier.

    Quand tu fais TOP n avec ORDER BY et sans index, il faut bien lire toute la table afin de récupérer les plus faibles valeurs...

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut
    J'ai mis un index et je suis passé en terminel serveur pour tester à distance, et la le miracle de l'informataique a opéré...
    ca marche impecable sans temps d'attente...

    Merci bien pacmann

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete très lente avec invite
    Par nabou dans le forum SSRS
    Réponses: 4
    Dernier message: 15/02/2011, 09h22
  2. Réponses: 3
    Dernier message: 01/08/2007, 09h26
  3. Réponses: 4
    Dernier message: 15/05/2007, 10h10
  4. pb requete mysql avec un WHERE NOT IN
    Par megapacman dans le forum Requêtes
    Réponses: 9
    Dernier message: 27/07/2006, 10h05
  5. Requetes Lentes avec LDAP
    Par ripou dans le forum Développement
    Réponses: 1
    Dernier message: 13/12/2005, 18h49

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