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 :

Execution d'une requete sur un resultat précédent


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Execution d'une requete sur un resultat précédent
    Salut à tous,

    Histoire d'optimiser une requête j'aimerais pouvoir boucler sur les résultats. Par exemple, une requête qui jouait sur 5 conditions serait exécuter 5 fois (1 fois par condition). Pour celà il faudrait que les requêtes s'exécutent à chaque fois sur le résultat précédent de la recherche et c'est mon problème. Que dois-je utiliser pour faire ça ? DataReader, Dataset,...

    J'utilise SQL Server 2000

    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Curseur...
    Bonjour,
    La première des choses qui me vient à l'esprit est l'utilisation de curseur avec un etable temporaire.
    Je n'ai aucune idée sur ton besoin mais l'idée c'est ça.
    J'espère que ça t'aidera sinon plus d'info aideront à mieux t'aider.

    Bonne chance.

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je vais donc expliquer plus en détail.

    J'ai une table Employee (et bien d'autres liées) et je veux trouver parmi ces employés ceux répondant à tels ou tels types de critères. Au départ je faisais UNE SEULE requête pour cette recherche et elle fonctionnait sans que celle-ci ne prenne 10 min à s'exécuter. Cependant, mes tests portent sur peu de données et l'application travaillera plus tard sur des milliers, c'est pourquoi mon boss m'a conseillé d'effectuer la recherche en plusieurs fois.

    Par exemple, on veut trouver les Employés ayant suivis une certification CISCO et ayant fait une formation en ASP.NET (je sais rien à voir :p). Donc avant j'aurais construit la recherche en une seule requête mais maintenant il m'est demandé de lancer d'abord une 1ere recherche pour trouver les employés ayant une certification en CISCO, stocker (dans une table temporaire ?) les résultats de cette recherche (ce qui fait que le nb d'employés se retrouve déjà nettement limités) et ensuite de trouver parmi ses employés ceux qui ont une formation en ASP.NET (la recherche s'effectuant donc sur les résultats de la recherche précédente).

    Pour ce faire, je pensais utiliser un Dataset mais le problème est que je n'arrive pas à utiliser le dataset contenant le resultat de la 1ere recherche et en gros la requete s'execute sur la table Employee... Au final j'ai (et c'est normal vu la façon dont c'est programmé) les résultats de la dernière recherche.

    Voila merci à toi d'essayer de m'aide.

    J'ai fais la version longue pour que tu comprennes bien mon problème

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Peut être les index suffiront
    Bonjour,
    Ton problème est donc les temps de réponse. Pour cela, vérifie d'abord tes index ( ça peut être juste ça ). Pour analyser ta requête et décider des index, sur SQL SERVER 2000, tu as la possibilité sur l'analyseur de requêtes de tracer le plan d'éxecution de ta requete et analyser chaque neoud de ton plan. Là où tu trouve le plus de temp, tu essayes juste d'y mettre un bon index pour accélérer ta requête.
    La requête est simple et se fait par de simples jointures. Analyse d'abord tes index et ensuite on verra

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je ne comprends pas trop l'histoire des index sorry :$

    Est-ce que tu veux dire qu'il n'y a pas trop de problèmes à exécuter tout en une fois ? (même si la taille de la requête dépasse des dizaines de lignes)

    Parce que pour l'instant je n'ai pas de problèmes mais avec des milliers de lignes je sais pas

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Analyse et index
    Les index est un bon chapitre à connaitre et donc il te faut une petite lecture dans le sujet.

    En gros, les index accélèrent la recherche. Et en ce qui concerne le nombre de lignes des tables, il n'y a aucun problème, il suffit de mettre les bons index sur les bons champs et il ne faut pas en abuser pour ne pas ralentir l'insertion et la mise à jour.

    Pour analyser ta requete, pose la sur l'analyseur de requêtes et séléctionne la. Appuie sur CTRL+L et tu auras ton plan d'éxecution. sur les noeuds où tu as un grand pourcentage tu vérifie ce qu'il fait et si nécessaire, tu ajoute un index sur le champ approprié.

    Pour ajouter les index, tu peux consulter l'aide de SQL SERVER. Il montre bien les étapes.

    Met tes index et remarque la différence

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup je vais essayer ça

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/11/2012, 02h45
  2. Réponses: 0
    Dernier message: 27/04/2012, 11h32
  3. Réponses: 19
    Dernier message: 14/12/2006, 14h21
  4. Requete avec une condition sur le resultat [10g]
    Par hotkebab99 dans le forum Oracle
    Réponses: 5
    Dernier message: 12/09/2006, 11h33
  5. Réponses: 2
    Dernier message: 31/05/2006, 09h47

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