Quando si utilizzando le API (application programming interface) di query, per elencare gli oggetti nel database, è possibile specificare i filtri che restringono i risultati che si desidera richiamare. In questi filtri, è possibile specificare i valori e gli intervalli degli attributi degli oggetti.
Quando vengono elaborate le query di un database, le informazioni del filtro vengono tradotti in clausole WHERE in un'istruzione SQL (Structured Query Language). Queste clausole WHERE associano gli attributi oggetto ai nomi delle colonne nelle tabelle database influenzate.
Se la query specifica un filtro che non viene tradotti a una colonna della tabella indicizzata, l'istruzione SQL probabilmente causerà la scansione della tabella. Questa scansione ha impatto negativo sulle prestazione e aumenta il rischio di blocchi critici. Sebbene questo impatto sulle prestazioni possa essere tollerato se si verifica solo poche volte al giorno, può influenzare negativamente l'efficienza se si verifica più volte in un minuto.
In queste circostanze, un indice personalizzato può notevolmente ridurre l'impatto. In una situazione di cliente reale, un indice personalizzato ha consentito di ridurre il tempo di risposta API da 25 secondi a 300 millisecondi. Invece di leggere 724 000 righe della tabella database, ne dovevano essere lette solo sei.
In base ai criteri di filtraggio specificati, alcune colonne potrebbero non essere incluse in un indice. Se questo è il caso e se viene utilizzata una scansione tabella, che provoca un rallentamento delle prestazioni di query, verificare il percorso di accesso dell'istruzione, utilizzando Explain DB2, ad esempio. Se necessario, definire un nuovo indice.
(c) Copyright IBM Corporation 2005, 2006.
This information center is powered by Eclipse technology (http://www.eclipse.org)