Trovare gli indici che il sistema consiglia

Accedi per salvare

Ogni volta che l'ottimizzatore avrebbe voluto un indice che non c'è, lo scrive. Il consiglio resta lì, e nessuno lo legge.

SELECT TABLE_NAME, KEY_COLUMNS_ADVISED,
       TIMES_ADVISED, ESTIMATED_CREATION_TIME,
       LAST_ADVISED, MTI_USED, MTI_CREATED
  FROM QSYS2.SYSIXADV
 WHERE TABLE_SCHEMA = 'PRODLIB'
 ORDER BY TIMES_ADVISED DESC
 FETCH FIRST 20 ROWS ONLY

L'indice si crea poi normalmente:

CREATE INDEX PRODLIB.ORDINI_CLIENTE_DATA
    ON PRODLIB.ORDINI (CODCLI, DTAORD)

Attenzione

i consigli non vanno seguiti tutti. TIMES_ADVISED alto conta più di un consiglio isolato, che spesso viene da una query lanciata una volta a mano. Ogni indice si paga a ogni scrittura sulla tabella: crearne venti perché il sistema li ha nominati rende le letture più veloci e gli inserimenti più lenti.

Suggerimento

MTI_USED indica quante volte il sistema ha costruito un indice temporaneo al volo per sopperire. Un numero alto lì è il segnale più forte che quell'indice serve davvero.


Rilasci. QSYS2.SYSIXADV è presente da molti rilasci. Le colonne MTI_USED e MTI_CREATED, che riguardano gli indici temporanei costruiti al volo, sono state aggiunte dopo: se la query risponde SQL0206 — colonna non trovata — toglile e il resto funziona.

← Torna al blog

Commenti

Nessun commento ancora. Sii il primo a commentare!

Devi avere un account per commentare. Accedi · Registrati