Optimisation base de données
Les progiciels en technologie Adonix prévoient dans le dictionnaire des tables standard des index conçus pour gérer les contraintes d'intégrité (par des clés uniques) et pour donner de bons temps de réponse dans la plupart des cas (index standards utilisés pour les listes gauches, les grosses tâches batch, les interrogations standard). Ces index peuvent porter sur 1 à 16 champs. Dans des index de ce type, on ne peut pas utiliser de champ indicé avec un indice supérieur à 1. Ainsi, par exemple, il est impossible de créer dans le dictionnaire un index sur la deuxième ligne d'une adresse.
Dans certains cas particuliers, il peut être intéressant de créer des index par paramétrage afin de réaliser une optimisation particulière (par exemple pour un état, ou pour optimiser une interrogation complexe). L'exemple typique peut être l'ajout d'un index dans une table volumineuse pour accélérer une la constitution des données d'une interrogation crée par le requêteur, ou encore l'utilisation d'un index dédié dans le paramétrage des objets, pour utiliser un ordre particulier dans une liste gauche.
Cette fonction permet de créer par paramétrage des index avec les propriétés suivantes :
- Ils ne doivent pas être utilisés dans un programme de façon explicite, mais servent à accélérer des requêtes lorsque l'index normalement utilisé n'est pas discriminant
- Ils peuvent être utilisés dans le paramétrage des listes gauches, afin de répondre par exemple à l'accélération des requêtes lorsque des filtres sont fréquemment faits sur certains champs. Ces filtres peuvent être par exemple des filtres induits par la gestion des rôles, ou des filtres utilisés par la fonction Sélection.
- Ils peuvent porter sur des champs indicés (alors que les index standards décrits dans le dictionnaire des tables ne le peuvent pas). Un exemple d'utilisation peut être l'ajout d'index sur certains croisements analytiques (les sections sont des champs indicés, ce qui interdit un index standard ; en outre, compte tenu du nombre de croisements existants, il serait impossible de prévoir ceux qui seront le plus utiles).
- Ils sont réputés autoriser des homonymes
- Ils peuvent être activés ou désactivés à la demande
Cette fonction étant du paramétrage, les index définis sont pérennes : tout index déjà paramétré ainsi ne sera pas mis à jour par de nouvelles versions du progiciels. Par contre, une nouvelle version de progiciel est susceptible d'ajouter de nouveaux index dans la liste (mais ces index seront systématiquement proposés désactivés).
Il est important de bien comprendre que ces index ne doivent servir qu'à optimiser des traitements standards, des listes gauches ou des interrogations paramétrables. Si un index est nécessaire dans le cadre d'un développement spécifique, il faut considérer que cet index doit être défini dans le dictionnaire des données, et pérennisé par un code activité.
Pré-requis
Reportez-vous à la documentation de Mise en oeuvre
Gestion de l'écran
Ecran de saisie
La saisie des index supplémentaires se fait dans un tableau, où l'on va définir, table par table, chaque index à créer.
Tableau
Table (champ TABLE) |
Définit la table sur laquelle porte l'index à créer. |
Code index (champ CODIND) |
Définit le code sous lequel cet index sera reconnu. Le nom doit impérativement commencer par les caractères SPE_, et ne doit pas exister par ailleurs (même pour une autre table). |
Descripteur index (champ DESCRIPT) |
Définit l'index sous la forme d'une liste de champs éventuellement indicé (l'indice étant entre parenthèses, la première occurrence équivalent à l'indice 0 qui peut être omis) et séparés par des '+'. Par exemple :
|
Actif (champ FLACT) |
Pemet de savoir si l'index défini est actif (ou doit le devenir). En effet, seul le bouton (ou une revalidation de la table, ou du dossier) permettra de créer effectivement l'index (ou de le supprimer si l'index à été mis dans l'état inactif). |
Commentaire (champ COMDES) |
Boutons spécifiques
Copie
permet de transférer le contenu de la table complète vers un autre dossier. Bloc numéro 1
Bloc numéro 2
|