Service SQL IBM i (AS/400) · Procédure
QSYS2.CREATE_USER_INDEX
Créer un index utilisateur
Crée un index utilisateur (objet *USRIDX) en SQL : type d'entrée, longueur d'entrée et de clé, taille, optimisation et droit public.
À quoi ça sert
Un index utilisateur est un objet qui stocke des entrées triées sur une clé, souvent utilisé par des programmes système ou des API. La procédure QSYS2.CREATE_USER_INDEX le crée sans passer par une API ni un programme dédié.
Les paramètres obligatoires sont USER_INDEX, USER_INDEX_LIBRARY et ENTRY_TYPE (par exemple VARIABLE). On précise ensuite MAXIMUM_ENTRY_LENGTH, KEY_LENGTH (0 par défaut), INDEX_SIZE (4 GB par défaut), OPTIMIZATION, IMMEDIATE_UPDATE, TRACK_USAGE, le texte et PUBLIC_AUTHORITY (*LIBCRTAUT par défaut). REPLACE vaut NO par défaut.
La procédure crée un objet dans la bibliothèque indiquée et n'a pas de mode aperçu (PREVIEW).
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
CALL QSYS2.CREATE_USER_INDEX(USER_INDEX => 'DEMOIDX2', USER_INDEX_LIBRARY => 'JOBISQL', ENTRY_TYPE => 'VARIABLE', MAXIMUM_ENTRY_LENGTH => 120, KEY_LENGTH => 5, TEXT_DESCRIPTION => 'Index créé par CREATE_USER_INDEX');
SELECT USER_INDEX_LIBRARY, USER_INDEX, ENTRY_TYPE, ENTRY_LENGTH, MAXIMUM_ENTRY_LENGTH, KEY_INSERTION, KEY_LENGTH, ENTRY_TOTAL, TEXT_DESCRIPTION FROM QSYS2.USER_INDEX_INFO WHERE USER_INDEX_LIBRARY = 'JOBISQL'
Ce que l'IBM i a renvoyé le 01/10/2026 (2 lignes au plus) :
| USER_INDEX_LIBRARY | USER_INDEX | ENTRY_TYPE | ENTRY_LENGTH | MAXIMUM_ENTRY_LENGTH | KEY_INSERTION | KEY_LENGTH | ENTRY_TOTAL | TEXT_DESCRIPTION |
|---|---|---|---|---|---|---|---|---|
| JOBISQL | UTIL908 | FIXED | 50 | 50 | YES | 5 | 3 | Index utilisateur de demonstration |
| JOBISQL | UTIL909 | VARIABLE | 0 | 2000 | YES | 5 | 0 | Index créé par CREATE_USER_INDEX |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Créer l'index utilisateur USRIX1 dans APPLIB pour des entrées de longueur variable (120 caractères au plus, clé de 5 caractères) avec le droit public *EXCLUDE.
-- Description: Create user space USRIX1 in APPLIB to contain variable-length entries.
-- The maximum length of an entry is 120 characters. The key is 5 characters long.
-- Assign *EXCLUDE public authority to the *USRIDX object.
CALL QSYS2.CREATE_USER_INDEX(USER_INDEX => 'USRIX1',
USER_INDEX_LIBRARY => 'APPLIB',
ENTRY_TYPE => 'VARIABLE',
MAXIMUM_ENTRY_LENGTH => 120,
KEY_LENGTH => 5,
PUBLIC_AUTHORITY => '*EXCLUDE');
Bon à savoir
Pensez à PUBLIC_AUTHORITY => '*EXCLUDE' si l'index ne doit pas être lisible par tous : la valeur par défaut (*LIBCRTAUT) reprend le droit de création de la bibliothèque.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
USER_INDEX |
VARCHAR(10) | obligatoire | Nom de l'index utilisateur |
USER_INDEX_LIBRARY |
VARCHAR(10) | obligatoire | Bibliothèque de l'index utilisateur |
ENTRY_TYPE |
VARCHAR(8) | obligatoire | Type de l'entrée |
MAXIMUM_ENTRY_LENGTH |
INTEGER | NULL | Longueur maximale d'une entrée |
KEY_LENGTH |
INTEGER | 0 | Longueur de la clé |
INDEX_SIZE |
VARCHAR(4) | '4 GB' | Taille de l'index |
REPLACE |
VARCHAR(3) | 'NO' | Remplacer l'entrée existante |
INDEX_ATTRIBUTE |
VARCHAR(10) | NULL | Attribut de l'index |
OPTIMIZATION |
VARCHAR(10) | 'RANDOM' | Optimisation |
IMMEDIATE_UPDATE |
VARCHAR(3) | 'NO' | Mise à jour immédiate |
TRACK_USAGE |
VARCHAR(3) | 'NO' | Suivi de l'utilisation |
TEXT_DESCRIPTION |
VARCHAR(50) | NULL | Texte descriptif |
PUBLIC_AUTHORITY |
VARCHAR(10) | '*LIBCRTAUT' | Droit public sur l'objet |
OBJECT_DOMAIN |
VARCHAR(10) | '*DEFAULT' | Domaine de l'objet |