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 :

Question bête... Count(1) ou count(*) ?


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut Question bête... Count(1) ou count(*) ?
    Bonjour,

    Qu'est ce qui est le plus performant (ou du moins le moins couteux !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from X;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(1) from X;
    Question bête mais le débat fait rage dans ma boite !


    Merci !

  2. #2
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    C'est pareils.
    Moi, je préfère "count (1)" - car c'est plus joli .

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    Citation Envoyé par DAB.cz Voir le message
    C'est pareils.
    Moi, je préfère "count (1)" - car c'est plus joli .

    le fait d'utiliser '*' n'oblige pas le moteur oracle a faire appel à des tables supplémentaires ?

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    je me demande si COUNT(PK) n'est pas le plus rapide...

  5. #5
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    je me demande si COUNT(PK) n'est pas le plus rapide...
    non, pourquoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create table t1 (a number constraint t1a primary key);
    create table t2 (b number constraint t2b primary key);
     
    insert into t1 (a)
      select level from dual connect by level <= 10000;
    insert into t2 (b)
      select level from dual connect by level <= 100;
     
    exec dbms_stats.gather_table_stats (user, 'T1')
    exec dbms_stats.gather_table_stats (user, 'T2')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select count (a)
      from t1, t2
      where b (+) = a;
     
    select count (1)
      from t1, t2
      where b (+) = a;
     
    select count (*)
      from t1, t2
      where b (+) = a;
    les mêmes résultats (10g R1):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    10000
     
    -------------------------------------------------------------------------------
    | Id  | Operation              | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    -------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT       |      |     1 |     6 |    13  (54)| 00:00:01 |
    |   1 |  SORT AGGREGATE        |      |     1 |     6 |            |          |
    |   2 |   NESTED LOOPS OUTER   |      | 10000 | 60000 |    13  (54)| 00:00:01 |
    |   3 |    INDEX FAST FULL SCAN| T1A  | 10000 | 30000 |     6   (0)| 00:00:01 |
    |*  4 |    INDEX UNIQUE SCAN   | T2B  |     1 |     3 |     0   (0)| 00:00:01 |
    -------------------------------------------------------------------------------

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Pourquoi ? Il me semblait que lorsque l'on spécifiait la PK, le décompte se faisait sur l'index correspondant.

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

Discussions similaires

  1. Question bête (PHP veux se télécharger)
    Par Nicos77 dans le forum Langage
    Réponses: 12
    Dernier message: 12/10/2005, 15h21
  2. Réponses: 7
    Dernier message: 05/10/2005, 11h29
  3. [VBA][Excel]Petite question bête !
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/09/2005, 15h36
  4. [MFC] Question bête sur les CListBox
    Par gwendo dans le forum MFC
    Réponses: 1
    Dernier message: 10/08/2005, 16h43
  5. Numéro auto ===== Question bête
    Par Nicos77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2003, 13h04

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