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

Décisions SGBD Discussion :

[Technique] Intérêt des index


Sujet :

Décisions SGBD

  1. #1
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut [Technique] Intérêt des index
    Je vous explique la situation,

    je dispose d'un base de données dans la quelle j'ai créé une table qui me sert de table de travail.

    Cette table étant remplie dynamiquement, est-il judicieux d'y créé des index ?

    Les indexs sont faits pour accélérer le traitement, mais comme ma table se rempli dynamiquement, la création des tables d'indexs prend aussi du temps !!! bref je suis devant un dilème et mes jeux d'essais ne m'ont pas apporter la solution.

    merci d'avance

    @+ddams
    @+ddams

  2. #2
    Membre éclairé
    Avatar de hachesse
    Inscrit en
    Mars 2002
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 189
    Points : 651
    Points
    651
    Par défaut
    salut

    un index sert a accelerer les recherche dans un table
    c'est donc a toi de voir si tu a besoin d'un access rapide a certaine donnée ou non

  3. #3
    Membre éclairé

    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    412
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2002
    Messages : 412
    Points : 657
    Points
    657
    Par défaut
    un index accélère la recherche (requêtes SELECT) mais ralenti les mises à jour (INSERT, UPDATE, DELETE).

    A voir donc...

    Ca vaut souvent le coup de poser des index sur les clefs étrangères afin d'accélérer les jointures.

    Thomas

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    En général le temps gagné lors des SELECT est largement visible alors que le temps perdu sur des requêtes de mise à jour ne se ressent pas à moins que ce soit des gros volumes d'opérations à chaque fois.
    Il est tout à fait judicieux de créer des index.

    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  5. #5
    Membre habitué Avatar de ddams
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2002
    Messages : 147
    Points : 148
    Points
    148
    Par défaut
    merci pour vos réponses...

    @+ddams
    @+ddams

  6. #6
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Petit ajout : un index dit cluster sert aussi parfois à trier les données physiquement dans la table. Ca a un avantage sur la ventilation des données dans la table, et donc sur diverses partitins, segments, etc. En clair, ça peut améliorer les accès concurrents et évitant certaines contentions en fin de pages.

    De plus, c'est un des moyens pour s'assurer l'unicité de clés.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  7. #7
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    tres franchement je vois pas en quoi le fait de creer un index ralenti tes insertion, ce n'est qu'un champ de plus dans ta table
    il y a du linge sur la corde à linge

  8. #8
    Membre éclairé
    Avatar de hachesse
    Inscrit en
    Mars 2002
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 189
    Points : 651
    Points
    651
    Par défaut
    Citation Envoyé par PassPassLeOuinje
    tres franchement je vois pas en quoi le fait de creer un index ralenti tes insertion, ce n'est qu'un champ de plus dans ta table
    très franchement, je vois pas pourquoi tu viens intervenir ici.

    Les index rendent les insertions plus lentes car il faut mettre a jours l'index en plus de l'insertions des données dans la table.
    Et c'est pareil pour les mise a jour et les suppressions.

    De plus, les indexe ne sont pas un champ de plus dans la table.

  9. #9
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    je suis pas specialiste DBA et je suis pas la pour polémiquer. Ce sera donc ma derniere intervention sur ce sujet.

    La mise a jour d'un index correspond à l'incrementation de l'index, c'est tout, juste une variable à mettre à jour. De plus, on ne fait pas de mise a jour de l'index ( ou alors une réindexation des tables mais c'est autre chose ) et pour finir la suppression ne fait pas decrementer l'index.

    un index n'est rien d'autre qu'une variable auto incrémentale qui doit respecter des regles d'unicité et qui est quasiment automatiquement gérée ( donc optimisée ) par toute les bases de donnée
    il y a du linge sur la corde à linge

  10. #10
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    En SGBDR, un index est une structure de données, généralement un arbre binaire. Rien à voir avec une variable à instancier.

    L'insertion dans un index dépend déjà du type d'index.

    Il y a des index clusters, définissant - généralement - l'ordre physique de stockage des enregistrement dans la table. La dernière feuille de l'arbre EST la page de données.

    Il y les index non cluster dont les dernières feuilles sont des pointeurs sur les pages de données

    Il y a encore d'autres types d'index : bitwise et bitmap, très utilisés dans les bases de DW, permettant un fort taux de compression, donc plus de données sur une page d'index, donc des recherches bien plus rapides, mais sur des champs spécifiquement courts ou des données dont le spectre et plutôt étroit.

    Dans des cas bien précis, un index peut RACCOURCIR les temps d'insertion : lors d'énormes accès concurrents, le fait d'indexer une table peut augmenter le nombre de pages qui vont être touchées, et donc améliorer la concurrence. Sans index, tout le monde essayerait d'écrire sur la dernière page de la hash table, d'où goulet d'étranglement compte tenu de la gestion des verrous...
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 67
    Points : 79
    Points
    79
    Par défaut
    Je dirais que la messe est deja dite,
    je ne ferais que rajouter qu'il faut faire tres attention
    au rajout d'index sur une table deja utilise par plusieurs
    requetes ou procedure stockee, car il y a un risque de briser
    leur perf.
    Certaines requetes peuvent voir leur perf chuter par le fait
    de passer par un nouvel index, cela peut casser un plan d'execution
    deja existant et performant.

    Donc penser a faire une etude d'impacte systematiquement sinon
    ca peut etre le mur !

    explain plan et autres TKPROOF (je sais c du Oracle et je connais
    pas les equivalents sur les autres SGBD) devraient aussi aider.

    P'tit Jean
    Java, JDBC, SQL, Oracle

    Specialiste Kamehameha des blagues-boulets

    Barman de la taverne

Discussions similaires

  1. De l'intérêt des tables index ?
    Par doc malkovich dans le forum Oracle
    Réponses: 8
    Dernier message: 22/09/2010, 14h58
  2. Utilisation des "indexs" ?
    Par vandeyy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 07/09/2004, 07h49
  3. [glut] de l'intérêt des listes
    Par khayyam90 dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/07/2004, 10h35
  4. Réponses: 4
    Dernier message: 16/03/2004, 14h16
  5. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28

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