4D v16.3

Créer et modifier des index

Accueil

 
4D v16.3
Créer et modifier des index

Créer et modifier des index  


 

 

Vous pouvez associer des index aux champs que vous utilisez fréquemment pour effectuer des recherches et des tris. Par exemple, vous pouvez indexer un champ qui stocke des noms de famille, de sociétés ou de produits si vous envisagez d’effectuer des recherches d’enregistrements particuliers ou de trier les enregistrements à l’aide de ces champs. Cette propriété est aussi utilisée pour les champs qui établissent les relations entre les tables. Pour plus d’informations sur ce point, reportez-vous à la section Créer et modifier des liens.

Lorsqu’un index est associé à un champ, 4D crée une table d’index pour ce champ. Cette table permet à 4D de traiter plus rapidement les recherches et les tris qui sont effectués sur ce champ. Lorsque vous réalisez des recherches ou des tris sur un champ non indexé, 4D explore séquentiellement les données et examine chaque enregistrement. L’indexation permet à 4D d’éviter d’examiner tous les enregistrements. 

Vous pouvez indexer les champs dont les types sont Alphanumérique, Texte, Date, Heure, Booléen, Entier, Entier long, Entier 64 bits, Réel, Float, Image et Objet. Lorsque vous ajoutez et supprimez des enregistrements, 4D met à jour la table d’index. Si vous créez un index pour un champ qui existe déjà, 4D indexe automatiquement les données existantes. Vous pouvez définir autant de champs indexés que vous le souhaitez. Les index sont également reconstruits lors d'opérations spécifiques telles que la conversion d'anciennes bases ou le compactage des données.

Chaque table d'index peut contenir jusqu'à :

  • 128 milliards de clés (i.e. d'entrées) pour les index de type Alpha, Texte et Float
  • 256 milliards de clés pour les autres types d'index (données scalaire).

N’indexez pas tous les champs, un index accroît la taille de la base de données et donc l’espace pris sur le disque. Une indexation excessive peut aussi accroître le temps requis pour sauvegarder un enregistrement car 4D met à jour les tables d’index lors de chaque validation d’enregistrement.

Les champs indexés sont affichés en caractères gras dans la fenêtre de structure.

4D propose différents types d’index. Le choix d’un type d’index est effectué en fonction du résultat attendu et du profil des données présentes dans le champ. Il existe trois grandes familles d’index :

  • les index standard : il s’agit d’index monochamps permettant d’accélérer les opérations usuelles de base de données (recherches et tris). 4D vous permet de choisir l’architecture interne de ce type d’index (hormis pour les champs objet) : B-Tree ou Cluster B-Tree.
  • les index composites : il s’agit d’index stockant conjointement la valeur de deux ou plusieurs champs souvent recherchés ensemble, par exemple Nom+Prénom.
  • les index de mots-clés : ces index sont disponibles uniquement pour les champs de type Alpha, Texte et Image. Ils sont destinés aux recherches rapides à l’intérieur de textes ou, dans le cas des images, parmi les mots-clés associés aux images.

Un index standard est destiné à accélérer les opérations de base de données (index standard désigne un index générique, par opposition aux index de mots-clés et aux index composites). 4D propose deux types d’architectures pour les index standard : B-Tree et Cluster B-Tree.

  • B-tree : index de type B-Tree classique. Ce type d’index performant et polyvalent répond à la plupart des besoins liés à l’indexation.
  • Cluster B-tree : index de type B-Tree utilisant des clusters. Cette architecture est plus efficace lorsque l’index contient peu de clés, c’est-à-dire lorsque les mêmes valeurs reviennent souvent dans les données.

Note : Un index B-Tree associé à un champ de type texte stocke au maximum les 1024 premiers caractères du champ. Par conséquent dans ce contexte, les recherches sur des chaînes contenant plus de 1024 caractères ne pourront aboutir.

Lorsque vous choisissez l’architecture de l’index, 4D propose également l’option Automatique. Dans ce cas, 4D sélectionne automatiquement l’architecture en fonction de la nature des données.
L'option Automatique est la seule option proposée pour les champs de type Objet. En effet dans ce cas, tous les chemins d'attributs sont automatiquement indexés.

Les index composites stockent la valeur conjointe de deux ou plusieurs champs pour chaque entrée. L’exemple classique est l’index composé basé sur les champs Prénom+Nom. La recherche de “Pierre Martin” sera alors optimisée comparativement à une recherche standard (recherche des “Martin” puis recherche des “Pierre”).

4D tire automatiquement parti des index composites lors des recherches ou des tris. Par exemple, si un index composite “Code postal+Ville” existe, il sera utilisé en cas de recherche du type “nom=dupond et ville=paris et code postal=750@”.

Dans l'éditeur de structure, la création des index composites s’effectue via la boîte de dialogue de création d’index. Pour une description détaillée de cette boîte de dialogue, reportez-vous ci-dessous au paragraphe “Créer un index”.

Les champs Alpha, Texte et Image peuvent comporter un type d’index spécifique : mots-clés.

  • Lorsque vous associez ce type d’index à un champ Alpha ou Texte, les textes stockés dans le champ concerné seront indexés mot par mot. Chaque mot sera indexé, même s’il ne comporte qu’un ou deux caractères. Ce type d’index permet d’accélérer de façon spectaculaire les recherches par mots-clés parmi les champs texte.
    Il est possible d’associer à la fois un index standard et un index de mots-clés aux champs Alpha et aux champs Texte (lorsqu’ils sont stockés avec les enregistrements). 4D utilisera l’index approprié en fonction du contexte.
  • Lorsque vous associez ce type d’index à un champ Image, les recherches parmi les mots-clés associés aux images (métadonnées) seront accélérées de façon significative. Attention, les index de mots-clés d’images sont exclusivement basés sur les métadonnées de type IPTC/Keywords. Ces types de métadonnées sont notamment pris en charge par les formats d’image TIFF et JPEG (à noter que BMP, PNG et GIF ne les prennent pas en charge). Les autres types de métadonnées ne sont pas pris en compte par l’indexation.
    La mise à jour des index de mots-clés d’images est effectuée automatiquement par 4D à chaque sauvegarde du champ image (création ou modification d’enregistrement, importation de données, etc.). Les métadonnées de type IPTC/Keywords sont automatiquement indexées par 4D lorsqu’elles sont présentes dans l’image (il n’est pas nécessaire d’appeler la commande SET PICTURE METADATA pour les inclure dans l’index du champ image).

Vous pouvez obtenir la liste des mots-clés contenus dans un index de mots-clés en utilisant la commande DISTINCT VALUES.

Vous exploitez les index de mots-clés texte ou image à l’aide de l’opérateur % : cet opérateur doit être placé dans les formules de recherche ou de tri afin d’utiliser spécifiquement une valeur de l’index. Par exemple :

 QUERY([IMAGES];[IMAGES]Photos %"cats")
     // cherche les photos associées au mot-clé cats

Ce principe est valide pour toutes les commandes de recherche et de tri : QUERY BY FORMULA, QUERY SELECTION, ORDER BY, etc.
Pour plus d’informations sur le fonctionnement de l’opérateur % et les recherches par mots-clés, reportez-vous à la section Opérateurs de comparaison dans le manuel Langage de 4D.

Le bouton de la barre d’outils de l’éditeur de structure fait apparaître la fenêtre de la Liste des index. Cette fenêtre affiche la liste et les propriétés de tous les index de la structure, quel que soit leur type :

Cette liste des index permet de visualiser les principales propriétés des index :

  • Type : Type d’index. Chaque type d’index (B-tree, Cluster B-Tree, mots-clés, index composite) est représenté avec une icône différente. Il est possible de modifier le type d’index en cliquant sur le triangle inversé et en sélectionnant une valeur différente dans le pop up menu.
  • Description : Table et champ(s) de l’index. Dans le cas d’un index composite, cette liste contient tous les champs de l’index.   
  • Nom : Nom de l’index. Cette propriété est notamment exploitée par les commandes du langage. Vous pouvez modifier ou ajouter un nom d’index en double-cliquant dans cette zone.

Le bouton   affiche la boîte de dialogue de configuration d’index.
Le bouton   permet de supprimer l’index sélectionné (une boîte de dialogue de confirmation apparaît). Ce bouton permet notamment de supprimer les index composites.
Deux commandes supplémentaires sont accessibles via le menu associé au bouton d’outils (disponible quand un index est sélectionné) :

  • Modifier : affiche les propriétés de l’index sélectionné dans la boîte de dialogue de configuration d’index (cf. paragraphe suivant). Cette commande a le même effet qu’un double-clic sur une ligne de la liste (hormis dans la zone de nom). 
  • Reconstruire : permet de supprimer et de reconstruire l’index sélectionné. Une boîte de dialogue de confirmation apparaît lorsque vous sélectionnez cette commande.

Le mode de création d’un index dépend de sa famille. En outre, vous pouvez choisir de créer un index directement ou via la boîte de dialogue de création d’index.

Pour créer directement un index standard :

  1. Sélectionnez un champ puis choisissez une valeur dans le menu “Index” de l’Inspecteur de champ.
    OU
    Cliquez avec le bouton droit de la souris sur un champ puis sélectionnez une valeur dans le sous-menu Index> du menu contextuel.
    Vous disposez de quatre options (sauf champ de type Objet) :
    • B-tree : crée un index de type B-Tree classique.
    • Cluster B-tree : crée un index de type B-Tree utilisant des clusters.
    • Automatique : laisse 4D sélectionner l’architecture en fonction du profil des données.
    • Aucun : pas d’index ou suppression de l’index existant.

Pour créer directement un index de mots-clés :

  1. Sélectionnez un champ Alpha, Texte ou Image puis cochez l’option “Index de mots-clés” dans l’Inspecteur de champ.

    OU
    Cliquez avec le bouton droit de la souris sur un champ puis sélectionnez Mots-clés dans le sous-menu Index> du menu contextuel.

Pour créer un index composite (ou tout type d’index) via la boîte de dialogue de création d’index :

  1. Choisissez l’option Nouvel index... dans le menu contextuel de la table ou Index dans le menu d’ajout d’objets de la barre d’outils de l’éditeur.
    OU
    Sélectionnez plusieurs champs en maintenant le bouton Ctrl (Windows) ou Commande (OS X) enfoncé puis cliquez avec le bouton droit de la souris sur un champ et choisissez Nouvel index composite... dans le menu contextuel.
    La boîte de dialogue de configuration d’index apparaît alors :

    • Table : liste toutes les tables de la base. Choisissez dans ce menu la table à laquelle appartiendra l’index.
    • Nom : zone de saisie du nom de l’index. Ce nom est utilisé par les commandes du langage de 4D.
    • Type : menu de sélection du type d’index à créer. Si vous conservez l’option “Automatique”, 4D choisira automatiquement le type d’index en fonction du contenu du champ.
    • Champ(s) de l’index : cette zone permet de définir le ou les champ(s) associé(s) à l’index. Elle peut contenir par défaut un champ en fonction de la sélection courante dans l’éditeur.

Pour ajouter un champ dans l’index, cliquez sur le bouton . La liste des champs de la table sélectionnée s’affiche, permettant de désigner le champ à ajouter à l’index.

  • Si vous voulez créer un index composite, ajoutez successivement chaque champ à inclure dans l’index. Une fois la liste établie, vous pouvez réordonner les champs via les boutons fléchés ou en utilisant le glisser-déposer.
  • Si vous créez un index composite basé sur les champs de la clé primaire, veillez à placer les champs dans le même ordre dans la clé et dans l'index.
  • Si vous avez choisi le type “Index de mots-clés”, seuls les champs de type Alpha ou Texte peuvent être sélectionnés. Dans ce cas également, vous ne pouvez inclure qu’un seul champ dans l’index.

Pour supprimer un champ de l’index, sélectionnez-le et cliquez sur le bouton .
Une fois l’index configuré, cliquez sur le bouton OK pour le générer.

Vous pouvez supprimer à tout moment un index devenu inutile. Cette opération peut être effectuée directement dans l’éditeur de structure ou dans la fenêtre Liste des index. Pour plus d’informations sur la fenêtre Liste des index, reportez-vous ci-dessus au paragraphe “Liste des index”.

Pour supprimer un index standard :

  1. Sélectionnez le champ associé à l’index à supprimer puis choisissez l’option Aucun dans le menu Index de l’Inspecteur.
    OU
  2. Cliquez avec le bouton droit sur le champ associé à l’index puis choisissez l’option Aucun dans le sous-menu Index> du menu contextuel.

Pour supprimer un index de mots-clés :

  1. Sélectionnez le champ associé à l’index à supprimer puis désélectionnez l’option “Index de mots-clés” dans l’Inspecteur.
    OU
  2. Cliquez avec le bouton droit sur le champ associé à l’index puis désélectionnez l’option Mots-clés dans le sous-menu Index> du menu contextuel.

La suppression (ainsi que la visualisation) d’un index composite s’effectue exclusivement depuis la fenêtre Liste des index (bouton ).

Vous pouvez à tout moment réindexer un champ, c’est-à-dire reconstruire les index qui lui sont associés en fonction des données présentes. Cette opération peut être utile dans le cadre de la maintenance des applications.

La réindexation peut être effectuée via la commande Reconstruire dans la Liste des index.

A noter que la modification de la langue des données (cf. Comparaison de texte) ou des opérations de maintenance telles que le compactage (cf. section Page Compactage) provoquent la reconstruction des index.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Définir la structure de la base de données

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Mode Développement ( 4D v16)
4D - Mode Développement ( 4D v16.1)
4D - Mode Développement ( 4D v16.3)