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 :

Requête très longue : boucle par enregistrements réalisées ?


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut Requête très longue : boucle par enregistrements réalisées ?
    Bonjour à tous,

    Je voux explique mon tit soucis, je me lance dans le SQL sur Access doucement et là je tombe sur un os que je n'explique pas !

    J'ai une 1ère requête "non SQL" qui me donne 802 enregistrements, 1 2ème qui m'en donne 998.
    Ensuite la requête SQL doit chercher les enregistrement qui sont dans celles de 998 et pas dans celles de 802.

    J'ai donc écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT [R : Artcc - historique vente].[Code court], [R : Artcc - historique vente].[Designation], [R : Artcc - historique vente].[Derniere Facture], [R : Artcc - historique vente].[Stock]
    FROM [R : Artcc - historique vente]
    WHERE NOT EXISTS (SELECT * 
                       FROM  [R : Artcc - vendu depuis 1500 jours]
                       WHERE [R : Artcc - historique vente].[Code court] = [R : Artcc - vendu depuis 1500 jours].[Code court] AND  [R : Artcc - historique vente].[Designation] = [R : Artcc - vendu depuis 1500 jours].[Designation]);
    Elle fonctionne très bien mais tourne pendant au moins 5 minutes avant de donner le résultat. C'est pourquoi j'ai l'impression qu'il y a des possibilités d'optimisation et je fait ainsi appel à vous ;-)

    Merci d'avance à toussssssssssssssssss!
    Bon mardi

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Mai 2004
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 236
    Points : 310
    Points
    310
    Par défaut
    Tu peux peut-être passé par des tables temporaires qui contiendraient le résultat de chaque requête.

    En espérant t'avoir aidé.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    je ne vois pas comment peux-tu être plus précis stp ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Peut être auriez vous de mailleurs résultats en écrivant votre requête avec une jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT R.[Code court], R.[Designation], R.[Derniere Facture], R.[Stock]
    FROM   [R : Artcc - historique vente] R
           LEFT OUTER JOIN [R : Artcc - vendu depuis 1500 jours] R2
                ON R.[Code court] = R2.[Code court] 
                        AND R.[Designation] = R2.[Designation]
    WHERE  R2.[Code court] IS NULL 
      AND  R2.[Designation] IS NULL
    Reste de toute façon qu'accès est l'un des plus mauvauis SGBDR et qui de plus est payant. Prenez la version gratuite de SQL Server 2000 (MSDE) ou 2005 (SQL Server Express) y'a pas photo...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 310
    Points : 139
    Points
    139
    Par défaut
    Merci Beaucoup à vous, c'est incroyable l'optimisation que l'on a now en terme de vitesse d'exécution !

    Je vais regarder les autres SGBDR que vous me dites...

    Encore merci beaucoup à vous et longue vie à ce forum...

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

Discussions similaires

  1. Requête très longue à charger
    Par LucasB16 dans le forum Requêtes
    Réponses: 17
    Dernier message: 09/10/2014, 18h38
  2. [AC-2003] Requête très longue sur table liée AS/400
    Par cortek's dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 20/09/2009, 11h28
  3. Requête très longue sur une table très simple
    Par kragenskul dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/06/2009, 14h28
  4. Une requête très longue à l'exécution
    Par mouaa dans le forum Langage SQL
    Réponses: 8
    Dernier message: 30/05/2008, 07h57
  5. Requête très longue à éxécuter
    Par pisoka000 dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/05/2007, 11h31

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