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

HyperFileSQL Discussion :

Création d'index pertinents


Sujet :

HyperFileSQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Points : 202
    Points
    202
    Par défaut Création d'index pertinents
    Bonjour,

    je souhaite accélérer les temps d'accès à ma base hyperfile CS lors de grosses requêtes SQL (je ne parle pas ici des HFiltre ou autre HLitRecherche* mais bien de requêtes SQL lancées avec HExecuteRequeteSQL), je me suis donc logiquement tourné vers les index et clés composées, cependant je ne suis pas certain d'optimiser correctement ces index, voici ma démarche :

    - chaque rubrique pouvant faire l'objet d'un filtre dans ma requête est déclarée comme clé avec doublon (exemple sur une table Evènement : rubrique DateEvènement, rubrique TypeEvènement, rubrique GravitéEvènement : ces trois rubriques peuvent faire l'objet d'un filtre dans le bloc WHERE d'une requête SQL)

    - je créé autant de clés composées que de combinaisons de clé avec doublons précédemment créées pouvant faire l'objet de filtres (exemple [DateEvènement + TypeEvènement] car ces 2 rubriques peuvent êtres filtrées simultanément dans le WHERE, ou encore [DateEvènement + GravitéEvènement + GravitéEvènement] pour les mêmes raisons)

    Mes questions sont :
    1) Si j'ai 3 rubriques indexées, et que plusieurs combinaisons de filtres peuvent être réalisées dans le WHERE : dois-je prévoir une clé composée pour chaque combinaison possible (exemple A+B, A+C, B+C, A+B+C) ou une 'globale' (A+B+C) suffit et fonctionne de la même façon ?

    2) Est-ce que l'ordre de rubriques de la clé composée a une importance, si oui de quelle manière ?

    3) Les critères Ascendant ou Descendant pour les index et les tris sur les rubriques composant les clés composées servent-elle uniquement à accélérer les tris et non pas les accès ? exemple si je cherche à accéder plus rapidement à mes derniers enregistrements (donc avec un filtre sur la rubrique DateEvènement , le fait d'être déclaré Ascendant ou Descendant pour la rubrique modifiera-t-il les accès (SELECT) ?

    4) Y a-t-il un intérêt à faire une clé composée constituée par l'ID de la table et l'ID d'une clée étrangère à celle-ci (dans le but d'accélérer la jointure entre les 2 tables concernées) ?

    EDIT : 5) Est-ce que la ré-indexation doit être lancée régulièrement (quelle fréquence ?) ou l'ajout/modif/suppression d'enregistrement garantit l'intégrité des index ? Autrement dit : est-ce que les index ne "s'émoussent" pas avec le temps si l'on n'intervient pas ?

    Merci infiniment pour vos lumières

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Octobre 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 254
    Points : 608
    Points
    608
    Par défaut
    Citation Envoyé par cladoo Voir le message
    Bonjour,

    Mes questions sont :
    1) Si j'ai 3 rubriques indexées, et que plusieurs combinaisons de filtres peuvent être réalisées dans le WHERE : dois-je prévoir une clé composée pour chaque combinaison possible (exemple A+B, A+C, B+C, A+B+C) ou une 'globale' (A+B+C) suffit et fonctionne de la même façon ?
    De mémoire seulement pour A+B (index couvrants). A vérifier.

    Citation Envoyé par cladoo Voir le message
    Bonjour,

    2) Est-ce que l'ordre de rubriques de la clé composée a une importance, si oui de quelle manière ?
    Oui, privilégier la rubrique la plus discriminante en 1er.

    Citation Envoyé par cladoo Voir le message
    Bonjour,
    3) Les critères Ascendant ou Descendant pour les index et les tris sur les rubriques composant les clés composées servent-elle uniquement à accélérer les tris et non pas les accès ? exemple si je cherche à accéder plus rapidement à mes derniers enregistrements (donc avec un filtre sur la rubrique DateEvènement , le fait d'être déclaré Ascendant ou Descendant pour la rubrique modifiera-t-il les accès (SELECT) ?
    Non il n'y aura aucun impact, inutile.

    Citation Envoyé par cladoo Voir le message

    4) Y a-t-il un intérêt à faire une clé composée constituée par l'ID de la table et l'ID d'une clée étrangère à celle-ci (dans le but d'accélérer la jointure entre les 2 tables concernées) ?
    Inutile.

    Citation Envoyé par cladoo Voir le message
    EDIT : 5) Est-ce que la ré-indexation doit être lancée régulièrement (quelle fréquence ?) ou l'ajout/modif/suppression d'enregistrement garantit l'intégrité des index ? Autrement dit : est-ce que les index ne "s'émoussent" pas avec le temps si l'on n'intervient pas ?
    Oui, il faut réindexer régulièrement (et pourquoi pas toutes les nuits si c'est un serveur, tant qu'à faire). Je n'ai pas d'explications sur le fait que les index ne soit pas toujours à jour, mais c'est un fait que j'ai constaté à +eurs reprises. Je pense qu'un index n'est mis à jour que dans certains cas, pour optimiser les insertions.

    Je te conseille aussi de regarder le taux de densité des index (index dense = lecture rapide mais insertion lente)

    Par ailleurs, ce qui joue grandement sur le temps d'exécution des requêtes, c'est, au delà des requêtes elles mêmes, la manière dont est conçu le modèle des données.
    Pour faire court, il faut privilégier nombreuses tables avec peu de colonnes.

    Cordialement, Arnaud Benhamdine.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Points : 202
    Points
    202
    Par défaut
    Merci beaucoup pour votre avis éclairé

    De mémoire seulement pour A+B (index couvrants). A vérifier.
    Je n'ai pas bien saisi : A+B ou A+B+C ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Octobre 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 254
    Points : 608
    Points
    608
    Par défaut
    L'index A+B+C couvre aussi l'index A+B (mais pas B+C, A+C...) : c'est séquentiel.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Points : 202
    Points
    202
    Par défaut
    Merci, je comprends mieux.

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

Discussions similaires

  1. [DBF]Comment afficher progression de création d'index?
    Par fruaud dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 28/12/2005, 11h38
  2. Réponses: 15
    Dernier message: 16/08/2005, 14h43
  3. Stratégie de création d'indexes
    Par nosnoss dans le forum Oracle
    Réponses: 6
    Dernier message: 01/07/2005, 10h37
  4. Création d'index sur un TTable
    Par bencot dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/03/2005, 13h23
  5. Création d'Index
    Par viny dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/12/2003, 13h20

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