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 :

Equivalence found_rows Oracle 10g


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Par défaut Equivalence found_rows Oracle 10g
    Bonjour à tous,

    étant donné que found_rows ne fonctionne plus sous 10g, existe-t-il un équivalent ?

    Merci d'avance

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Je ne pense pas que je comprend, peux tu donner quelques détails.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Par défaut
    En fait j'avais besoin de connaitre le nombre de résultat d'une requête.

    J'ai utilisé une fonction analytique qui a des perfs corrects.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    SELECT *
      FROM (
             SELECT DISTINCT
               TA.icone_type_agence,
               TA.Nom_type_agence,
               AG.id_presto,
               AG.id_agence,
               AG.raison_social_agence,
               AG.code_postal_agence,
               AG.ville_agence,
               AG.password_agence,
               AG.telephone_agence,
               SL.icone_statut_logiciel,
               SL.nom_statut_logiciel,
               LG.nom_logiciel,
               ROW_NUMBER() OVER (ORDER BY AG.id_presto) num,
               count(*) OVER() count_annonce
              FROM
              TYPE_AGENCE TA,
              AGENCE AG,
              AGENCE_REMONTEE AR,
              STATUT_LOGICIEL SL,
              LOGICIEL LG
              WHERE TA.id_type_agence = AG.id_type_agence
                AND AG.id_presto = AR.id_presto(+)
                AND AG.id_logiciel = LG.id_logiciel
                AND LG.id_statut_logiciel = SL.id_statut_logiciel
                AND AG.id_statut_agence > -1
           )
     WHERE num BETWEEN 1 AND 10
    S'il existe qq chose de mieux je suis preneur

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Hm, essayez avec une table plus grande et dit moi si les perfs restent toujours correcte.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Connecté à :
    Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
    JServer Release 9.2.0.5.0 - Production
    
    SQL> set timing on
    SQL> Select count(*)
      2  From big_table;
    
      COUNT(*)
    ----------
       1052736
    
    Ecoulé : 00 :00 :09.99
    
    SQL> l
      1  Select * From(
      2    Select t.*, count(*) over()
      3      from big_table t
      4    )
      5* Where rownum < 10
    
    ...  
    9 ligne(s) sélectionnée(s).
    
    Ecoulé : 00 :01 :10.11

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Hm, essayez avec une table plus grande et dit moi si les perfs restent toujours correcte.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Connecté à :
    Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
    JServer Release 9.2.0.5.0 - Production
    
    SQL> set timing on
    SQL> Select count(*)
      2  From big_table;
    
      COUNT(*)
    ----------
       1052736
    
    Ecoulé : 00 :00 :09.99
    
    SQL> l
      1  Select * From(
      2    Select t.*, count(*) over()
      3      from big_table t
      4    )
      5* Where rownum < 10
    
    ...  
    9 ligne(s) sélectionnée(s).
    
    Ecoulé : 00 :01 :10.11
    Je pense que le select count(*) reste la meilleure solution, mais comment l'intégrer à la requête principale ?

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    C'est juste une idée, mais peut-être quelque chose de la forme suivante :

    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
    select
        (select count(*)
        FROM
              TYPE_AGENCE TA,
              AGENCE AG,
              AGENCE_REMONTEE AR,
              STATUT_LOGICIEL SL,
              LOGICIEL LG
              WHERE TA.id_type_agence = AG.id_type_agence
                AND AG.id_presto = AR.id_presto(+) -- C'est mal !
                AND AG.id_logiciel = LG.id_logiciel
                AND LG.id_statut_logiciel = SL.id_statut_logiciel
                AND AG.id_statut_agence > -1) found_row,
        ... -- le reste du select
    AND rownum < 10

  7. #7
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par shadeoner Voir le message
    Je pense que le select count(*) reste la meilleure solution, mais comment l'intégrer à la requête principale ?
    Count(*) coûte rélativement cher. Donc la meilleur solution c'est de s'en passer. Mais, bon, que est-ce que t'as besoin de faire et dans quelles conditions ?

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

Discussions similaires

  1. Equivalent sous Oracle d une option SQLServer
    Par Pasiphae dans le forum Oracle
    Réponses: 3
    Dernier message: 19/11/2004, 17h30
  2. Installation ORACLE 10g sous XP Pro
    Par DUCORROY dans le forum Oracle
    Réponses: 7
    Dernier message: 21/10/2004, 09h08
  3. Installation Oracle 10g sous Windows 2000
    Par Jeff206 dans le forum Oracle
    Réponses: 6
    Dernier message: 24/08/2004, 15h51
  4. [ORACLE 10g Linux] Pbm de connexion avec un Client winXP
    Par zarbiwayne dans le forum Administration
    Réponses: 26
    Dernier message: 20/08/2004, 22h37

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