Aller au contenu principal
Version: 20 R7 BETA

SET INDEX

SET INDEX ( leChamp ; index {; *} )

ParamètreTypeDescription
leFieldFieldChamp duquel créer ou supprimer l’index
indexBoolean, Integer• Vrai=Créer l’index, Faux=Supprimer l’index, ou• Créer un index de type : -1=mots-clés, 0=par défaut, 1=B-Tree standard, 3=B-Tree cluster
*OperatorIndexation asynchrone si * est passé

Note de compatibilité

Bien que SET INDEX soit une ancienne commande, elle reste entièrement prise en charge et peut être conservée dans votre application -- il n'est pas nécessaire de réécrire le code existant. Toutefois, il est désormais préférable d'utiliser les commandes CREATE INDEX et DELETE INDEX pour gérer les index car elles ont des fonctionnalités plus étendues.

Description

La commande SET INDEX admet deux syntaxes :

  • Si vous passez un booléen dans le paramètre index, la commande crée ou supprime l'index du champ que vous avez passé dans leChamp.
  • Si vous passez un entier dans le paramètre index, la commande crée un index du type spécifié.

index = booléen
Pour indexer le champ, passez Vrai dans index. La commande crée un index du type par défaut. Si l'index existe déjà, la commande ne fait rien.
Si vous passez Faux dans index, la commande supprimera tous les index standard (c'est-à-dire, non composites et non mots-clés) associés au champ. S'il n'existe pas d'index, la commande ne fait rien.

index = entier
Dans ce cas, la commande crée un index du type spécifié pour leChamp. Vous pouvez passer une des constantes suivantes, placées dans le thème “Type index” :

ConstanteTypeValeurComment
Cluster BTree IndexEntier long3Index de type B-Tree utilisant des clusters. Ce type d’index est optimisé lorsque l’index contient peu de clés, c’est-à-dire lorsque les mêmes valeurs reviennent souvent dans les données.
Default Index TypeEntier long04D définit le type d’index (hors index de mots-clés) le plus optimisé en fonction du contenu du champ.
Keywords IndexEntier long-1Permet l’indexation mot à mot du contenu du champ. Ce type d’index n’est utilisable qu’avec les champs de type Texte ou Alpha. Attention, les index de mots-clés ne peuvent pas être composites.
Standard BTree IndexEntier long1Index de type B-Tree classique. Ce type d’index polyvalent est utilisé dans les versions précédentes de 4D

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.

SET INDEX n'indexera pas les enregistrements verrouillés ; la commande attendra que les enregistrements soient libérés.

Le paramètre optionnel * indique une indexation asynchrone (simultanée). Une indexation asynchrone permet à la méthode appelante de poursuivre son exécution immédiatement après l'appel, que l'indexation soit terminée ou non. Cependant, l'exécution sera stoppée si une commande requiert l'index.

Notes :

  • Les index créés par cette commande ne portent pas de nom. Ils ne pourront pas être supprimés par la commande DELETE INDEX via la syntaxe basée sur le nom.
  • Cette commande ne permet pas de créer ou de supprimer des index composites.
  • Cette commande ne permet pas de supprimer un index de mots-clés créé par la commande CREATE INDEX.

Note pour le déploiement

Étant donné que cette commande modifie la structure de la base de données, elle ne peut pas être utilisée dans une application packagée en lecture seule (fichier .4dc installé dans le dossier Program Files ou fichier .4dz).

Exemple 1

L'exemple suivant indexe le champ [Clients]Num :

 UNLOAD RECORD([Clients])
 SET INDEX([Clients]Num;True)

Exemple 2

Vous souhaitez indexer le champ [Clients]Nom, en mode asynchrone :

 SET INDEX([Clients]Nom;True;*)

Exemple 3

Création d'un index de mots-clés :

 SET INDEX([Livres]Résumé;Keywords Index)

Voir aussi

CREATE INDEX
DELETE INDEX
GET FIELD PROPERTIES
ORDER BY
QUERY

Propriétés

Numéro de commande344
Thread safe