Paramétrage > Exploitation > Données > 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

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

Ecran de saisie

Présentation

La saisie des index supplémentaires se fait dans un tableau, où l'on va définir, table par table, chaque index à créer.

 

Champs

Les champs suivants sont présents dans cet onglet :

Tableau

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 :

  • sur la table utilisateur, un index par le code du deuxième responsable hiérarchique serait défini par : CHEF(1)
  • sur la table des états, un index par module, puis par groupe, puis par code état, serait défini par : MODULE+GRP+RPTCOD
  • 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

Permet de lancer la mise à jour des tables en créant les index qui ont été ajoutés ou activés, mais aussi ou en supprimant les index qui ont été enlevés ou désactivés.

Attention, cette phase peut être longue et coûteuse en temps machine, dans la mesure où une indexation sur une table volumineuse nécessite sa lecture et la constitution de l'index. Par ailleurs, elle peut aussi nécessiter de la place disque et poser des problèmes s'il n'y a pas assez de marge de place dans la base. Dans ce cas, des messages d'erreurs explicites seront renvoyés par la base de données.

Les champs suivants sont présents dans la fenêtre ouverte par ce bouton :

Bloc numéro 1

  • champ OBJET

 

  • champ CLES

 

Bloc numéro 2

  • Depuis le dossier (champ DOSORG)

Indiquez le dossier à partir duquel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

  • Tous dossiers (champ TOUDOS)

Cette option permet de copier la fiche vers tous les dossiers définis dans le dictionnaire (table ADOSSIER de la solution courante).

  • Vers le dossier (champ DOSDES)

Indiquez le dossier dans lequel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

permet de transférer le contenu de la table complète vers un autre dossier.

Messages d'erreur

Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :

Index XXX+YYY+ZZZ+...  YYY zone inexistante

La zone dont le nom est indiqué n'existe pas dans l'index qui vient d'être défini.

Composantes de clé déjà saisies pour l'index XXX

Cet index est déjà un index standard de la table

Le code doit commencer par SPE_

Le nom  proposé pour l'index n'est pas conforme.

Code déjà existant en ligne i

On a déjà créé un index avec le même nom.

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre