Recette SQL IBM i (AS/400) · Base de données
Les index que Db2 conseille de créer
Les index que l'optimiseur Db2 for i conseille de créer, classés par nombre de conseils : la piste n°1 pour accélérer les requêtes.
Le besoin
Une requête lente faute d'index : Db2 le sait et le note. Chaque fois que l'optimiseur aurait aimé un index, il l'enregistre dans le conseiller d'index.
La requête
SELECT TABLE_SCHEMA, TABLE_NAME, KEY_COLUMNS_ADVISED, TIMES_ADVISED, INDEX_TYPE,
MOST_EXPENSIVE_QUERY, LAST_ADVISED
FROM QSYS2.SYSIXADV
ORDER BY TIMES_ADVISED DESC
FETCH FIRST 10 ROWS ONLY
QSYS2.SYSIXADV donne pour chaque conseil la table, les colonnes clés suggérées, le nombre de fois où il a été donné et la durée de la requête la plus coûteuse concernée.
Le résultat sur un IBM i 7.5
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| TABLE_SCHEMA Bibliothèque de la table | TABLE_NAME Nom de la table | KEY_COLUMNS_ADVISED | TIMES_ADVISED | INDEX_TYPE | MOST_EXPENSIVE_QUERY | LAST_ADVISED |
|---|---|---|---|---|---|---|
| QNEWNAVSRV | QINAVMNTRG | OBSOLETE | 2534780 | RADIX | 1 | 2026-10-01 13:17:13.996337 |
| QUSRBRM | QA1ANET2 | OBJ | 632122 | RADIX | 1 | 2026-10-01 14:44:40.885698 |
| QUSRBRM | QA1ANET2 | RMTSYS, RMTRNI, OBJ, LIB | 631963 | RADIX | 1 | 2026-10-01 14:44:40.908702 |
| QUSRBRM | QA1A1RMT | R1MACT, R1MSYS | 631953 | RADIX | 1 | 2026-10-01 14:44:40.928698 |
| QUSRBRM | QA1ANET2 | OBJ, RMTSYS, RMTRNI, LIB | 631927 | RADIX | 1 | 2026-10-01 14:44:40.908690 |
Chez nous, les conseils portent sur des tables système (IBM Navigator, BRMS) : rien à créer côté applicatif.
Données anonymisées : les noms de système, de profils, de bibliothèques, de postes et les adresses IP ont été remplacés.
L'adapter à votre système
Filtrez sur vos bibliothèques applicatives (WHERE TABLE_SCHEMA = 'MABIB'). Ne créez pas tout : un index coûte à chaque écriture. SYSTOOLS.ACT_ON_INDEX_ADVICE crée les index au-delà d'un seuil.