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 :

Oracle 10.2 : amélioration de perf : requête spatiale et ntile


Sujet :

SQL Oracle

  1. #1
    Membre régulier Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Points : 76
    Points
    76
    Par défaut Oracle 10.2 : amélioration de perf : requête spatiale et ntile
    Aloha

    J'ai un explain plan pourrite sur cette requête :
    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
    SELECT S.GID_D,
           S.GID_A,
           S.CLASS,
           S.NAME
           || NTILE (
                 4)
              OVER (
                 ORDER BY
                    SDO_GEOM.SDO_DISTANCE (S.PARC_GEOMETRY,S.BASIAS_GEOMETRY, 1) DESC),
           S."TYPE",
           SDO_GEOM.SDO_DISTANCE (S.PARC_GEOMETRY,S.BASIAS_GEOMETRY,  1)
      FROM (SELECT                                                  /*+ ORDERED */
                   BASIAS.GID "GID_D",
                   BASIAS.GEOMETRY AS BASIAS_GEOMETRY,
                   PARC.GID "GID_A",
                   PARC.GEOMETRY AS PARC_GEOMETRY,
                   'PCI_PARC' "CLASS",
                   'BASIAS_' AS NAME,
                   0 "TYPE"
              FROM A_REIMS.BASIAS BASIAS, A_REIMS.PCI_PARC PARC
             WHERE SDO_WITHIN_DISTANCE (PARC.GEOMETRY,
                                        BASIAS.GEOMETRY,
                                        'distance=200') = 'TRUE'
                   ) S
                   ;
    Cardinalité et coût trop important pour que je puisse espérer un temps de traitement raisonnable et pourtant je n'ai que 608 objets en BASIAS et ~60000 en PCI_PARC.

    Quelqu'un a-t'il un indice à me donner ?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Je ne connais pas du tout spatial mais autant évaluer SDO_GEOM.SDO_DISTANCE (S.PARC_GEOMETRY,S.BASIAS_GEOMETRY, 1) 1 fois dans la sous requête que plusieurs fois.
    Par ailleurs je ne vois pas l'intérêt du hint ordered surtout avec 2 tables.

  3. #3
    Membre régulier Avatar de H.ile
    Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Janvier 2008
    Messages : 122
    Points : 76
    Points
    76
    Par défaut
    Merci pour l'astuce sur les distances. Je vais essayer.
    Ma crainte, qu'il calcule les distances pour l'ensemble des objets entre eux.
    Sinon pour le /* Ordered */, il s'agit d'optimiser le plan d'exécution compte tenu de l'utilisation d'une table spatiale comme référence dans la fonction SDO_WITHIN_DISTANCE (préconisé par Oracle, pour ce que ça peut valoir).

    **************

    en fait pas besoin de la sous-req. le ntile fonctionne très bien dans le corps de ma requête géographique. Mais l'optimisation ne semble pas aller avec...

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/05/2009, 16h16
  2. Amélioration perf requête
    Par toulouseadr dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/07/2008, 08h37
  3. Amélioration d'une requête
    Par phtpht dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/07/2006, 12h20
  4. Réponses: 4
    Dernier message: 26/05/2006, 08h59
  5. Réponses: 4
    Dernier message: 12/12/2005, 17h25

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