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 :

optimisation de ma requete


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 42
    Par défaut optimisation de ma requete
    bonjour ,
    voila la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select t.ass_contractnumber as contractnumber,t.org_id_ett as org_id_ett
    from assignments t
    where t.ass_statut in (3, 4)
    group by t.ass_contractnumber,t.org_id_ett
    having count(ass_contractnumber) > 1
    ma table contient klk 10000 tuple .
    comment je peux optimiser cette requete ???

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    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 Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    :code: pour rendre le code plus lisible (le # lors de l'édition du message)

    Attention, un count(nom_colonne) compte les lignes où la colonne est NOT NULL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WITH t AS (				SELECT NULL AS a, 1 AS b FROM dual 
    			UNION ALL	SELECT NULL AS a, 2 AS b FROM dual 
    			UNION ALL	SELECT 1 AS a, 1 AS b FROM dual 
    			UNION ALL	SELECT 1 AS a, 1 AS b FROM dual 
    			)
    SELECT a, b, COUNT(*), COUNT(a)
    FROM t
    GROUP BY a, b
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A	B	COUNT(*)COUNT(A)
    	1	1	0
    	2	1	0
    1	1	2	2
    A part ça le code ne peut pas être plus optimisé.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    McM >> j'ai testé un peu par hasard ta solution sur une 10gR1 :
    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
    10g CYRIL> WITH t AS (    SELECT NULL AS a, 1 AS b FROM dual
      2     UNION ALL SELECT NULL AS a, 2 AS b FROM dual 
      3     UNION ALL SELECT 1 AS a, 1 AS b FROM dual 
      4     UNION ALL SELECT 1 AS a, 1 AS b FROM dual 
      5     )
      6  SELECT a, b, COUNT(*), COUNT(a)
      7  FROM t
      8  GROUP BY a, b;
     
             A          B   COUNT(*)   COUNT(A)
    ---------- ---------- ---------- ----------
                        1          1          0
                        2          1          0
             1          1          2          2
     
    3 ligne(s) sélectionnée(s).
    Tu peux m'expliquer la différence de ce résultat par rapport au tien ?

    [EDIT]
    après mûre réflexion, je pense que le copier-coller de ton résultat a un souci car le nombre de colonnes n'est identique pour chacune des lignes
    [/EDIT]

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    la différence, c'est le formattage

    > :code: pour rendre le code plus lisible
    donc pas quote ;-)

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    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 Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ouais, j'ai vu, en fait le pb vient de la balise QUOTE, je vais remettre le CODE

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Ah ok je comprends mieux
    Merci à vous 2.

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/04/2006, 18h58
  2. Optimisation d'une requete récurrente
    Par winzou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/01/2006, 22h07
  3. Optimisation d'une requete specifique
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 9
    Dernier message: 16/12/2005, 14h14
  4. optimisation d'une requete de recherche
    Par moog dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/04/2005, 16h58
  5. optimiser BDD pr requete
    Par xopos dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/02/2005, 10h06

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