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

Oracle Discussion :

De l'intérêt des tables index ?


Sujet :

Oracle

  1. #1
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut De l'intérêt des tables index ?
    Bonjour à tous,

    Je n'ai jamais vu ni utilisé les tables index-organized, et je me posais des questions sur leur intérêt dans le cadre d'une optimisation ...

    Dans quel cadre préférera-t-on une table index-organized à une table classique ( heap ) agrémentée d'un index ?

    Là par exemple j'ai un update qui prend un certain temps, pour chaque colonne on passe par une sous-requête complexe et couteuse.
    Je pensais passer par une table temporaire ( en global temporary ou en create / drop si je veux passer par une index_organized ) et l'utiliser ensuite pour faire un update. D'après ce que j'ai compris, il vaut mieux passer par une table temporaire + index, c'est ça ?

  2. #2
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    L'avantage de la table organisée en index, est que la donnée est incluse dans l'index. Il n'ya donc pas besoin de faire une 2ème lecture dans la table associée, puisque l'index EST la table.

  3. #3
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par john malkovich Voir le message
    Bonjour à tous,

    Je n'ai jamais vu ni utilisé les tables index-organized, et je me posais des questions sur leur intérêt dans le cadre d'une optimisation ...

    Dans quel cadre préférera-t-on une table index-organized à une table classique ( heap ) agrémentée d'un index ?

    Là par exemple j'ai un update qui prend un certain temps, pour chaque colonne on passe par une sous-requête complexe et couteuse.
    Je pensais passer par une table temporaire ( en global temporary ou en create / drop si je veux passer par une index_organized ) et l'utiliser ensuite pour faire un update. D'après ce que j'ai compris, il vaut mieux passer par une table temporaire + index, c'est ça ?
    Il est conseillé d'optimiser l'update plutôt que d'ajouter des tables temporaires. Avez vous un exemple (quelle version d'Oracle) ?

  4. #4
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    L'avantage de la table organisée en index, est que la donnée est incluse dans l'index. Il n'ya donc pas besoin de faire une 2ème lecture dans la table associée, puisque l'index EST la table.
    Justement, ça a l'air bien sur le papier ... Une solution de facilité serait de passer toutes les tables qui ont une PK ( bien sûr aucune table est sans PK ) en tables organisées en index pour aller + vite non ?

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Ça dépend de la façon dont vous interrogez votre table.

    Si vous passez toujours par la PK, oui l'organisation en index est rentable.
    Si vous avez par contre d'autres index, alors là non ça devient beaucoup moins intéressant.

  6. #6
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Il est conseillé d'optimiser l'update plutôt que d'ajouter des tables temporaires. Avez vous un exemple (quelle version d'Oracle) ?
    Oracle 10g

    Par exemple on a une table "echeancier" avec un identifiant, une date et un montant.
    Mon update fait la somme des montants à venir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update avenir
    set montant=(select sum(montant) from echeancier
    where echeancier.id=avenir.id
    and echeancier.datecheance > :dateparametre
    and ( autres filtres ) ;
    Toutes les lignes de la table avenir sont mises à jour.
    Les index sont bien utilisés mais comme on accède à de nombreuses lignes c'est long
    Je pensais donc passer par une table temporaire, créée rapidement sans utiliser d'index, mettre un index dessus et ensuite faire l'update.

  7. #7
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Avez-vous essayé avec Merge ?

  8. #8
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Avez-vous essayé avec Merge ?
    Non, je n'y ai pas pensé ...
    Je vais essayer

  9. #9
    Expert confirmé
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 884
    Points : 4 285
    Points
    4 285
    Billets dans le blog
    1
    Par défaut
    Le merge est en effet plus rapide ...
    La requête initiale durait 1h15, le merge 2'20 et l'update avec table tmp 2'40.

    Merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/08/2007, 14h30
  2. [Débutant] Ajouter des tables, des indexs
    Par sunchai dans le forum Oracle
    Réponses: 2
    Dernier message: 12/07/2006, 17h46
  3. SQL 2000 - Liste + taille des tables et index
    Par Fox dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/03/2004, 15h59
  4. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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