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
Partager