Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev > HyperFileSQL
HyperFileSQL HyperFileSQL est un système de gestion de base de données relationnel exploité par les logiciels WinDev, WebDev et WinDev Mobile.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/10/2012, 08h17   #1
cladoo
Membre habitué
 
Inscription : mars 2007
Messages : 242
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 242
Points : 104
Points : 104
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
cladoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2012, 18h00   #2
Arnaud B.
Membre éprouvé
 
Homme Arnaud Benhamdine
Consultant
Inscription : octobre 2004
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Benhamdine
Localisation : France

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

Informations forums :
Inscription : octobre 2004
Messages : 213
Points : 455
Points : 455
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.
Arnaud B. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/10/2012, 18h09   #3
cladoo
Membre habitué
 
Inscription : mars 2007
Messages : 242
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 242
Points : 104
Points : 104
Merci beaucoup pour votre avis éclairé

Citation:
De mémoire seulement pour A+B (index couvrants). A vérifier.
Je n'ai pas bien saisi : A+B ou A+B+C ?
cladoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2012, 18h12   #4
Arnaud B.
Membre éprouvé
 
Homme Arnaud Benhamdine
Consultant
Inscription : octobre 2004
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Benhamdine
Localisation : France

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

Informations forums :
Inscription : octobre 2004
Messages : 213
Points : 455
Points : 455
L'index A+B+C couvre aussi l'index A+B (mais pas B+C, A+C...) : c'est séquentiel.
Arnaud B. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/10/2012, 10h07   #5
cladoo
Membre habitué
 
Inscription : mars 2007
Messages : 242
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 242
Points : 104
Points : 104
Merci, je comprends mieux.
cladoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h44.


 
 
 
 
Partenaires

Hébergement Web