Net.Data: Guida alla gestione e alla programmazione per OS/400
Per maggiori informazioni e considerazioni sulle prestazioni DB2,
consultare DB2 for AS/400 SQL Programming Guide. Questa
pubblicazione contiene una grande quantità di informazioni, come ad esempio
sull'uso appropriato degli indici SQL, sul miglioramento delle
prestazioni nell'unione interrogazioni e quando i dati vengono
selezionati da più di due tabelle. Nelle sezioni che seguono, vengono
riportate indicazioni sul database e le tecniche specifiche dell'ambiente
di linguaggio SQL:
Il riepilogo di seguito riportato descrive alcune delle più semplici
tecniche di database che migliorano l'accesso al database:
- Evitare la conversione numerica. Quando u n valore di colonna ed un
valore letterale vengono confrontati, tentare di specificare gli stessi tipi
di dati e attributi. DB2 per AS/400 non utilizza un indice per la
colonna definita se il valore della costante presenta una maggiore precisione
di quella della colonna. Se le due voci comparate hanno diversi tipi di
dati, DB2 per AS/400 dovrà convertire uno o l'altro dei valori, il che
può provocare mancanza di precisione (a causa della limitata precisione della
macchina).
Ad esempio, EDUCLVL è un valore misto (numero intero-parola)
(SMALLINT). Specificare:
... WHERE EDUCLVL < 11 AND EDUCLVL >= 2
Invece di:
... WHERE EDUCLVL < 1.1E1 AND EDUCLVL > 1.3
- Evitare di sforare con le stringhe. Utilizzare la stessa lunghezza
di dati quando si confronta un valore di colonna di stringa con uno
rappresentato da una costante. DB2 per AS/400 non utilizza un indice se
il valore della costante è maggiore della lunghezza della colonna.
Ad esempio, EMPNO è CHAR(6) e DEPTNO è CHAR(3). Specificare:
... WHERE EMPNO > '000300' AND DEPTNO < 'E20'
Invece di:
... WHERE EMPNO > '000300 ' AND DEPTNO < 'E20 '
- Evitare di utilizzare i modelli LIKE che iniziano con % or _. Il
segno di percentuale (%) e la sottolineatura (_), quando utilizzati nel
modello di un predicato LIKE, specificano una stringa di caratteri simile al
valore della colonna delle righe da selezionare. Se vengono utilizzati
per distinguere i caratteri posti al centro o alla fine di una stringa, i
modelli LIKE possono usufruire degli indici. Ad esempio:
... WHERE LASTNAME LIKE 'J%SON%'
Tuttavia se utilizzati all'inizio di una stringa di caratteri, i
modelli LIKE possono evitare che DB2 per AS/400 utilizzi indici definiti sulla
colonna LASTNAME in modo da limitare il numero di righe da scorrere. Ad
esempio:
... WHERE LASTNAME LIKE '%SON'
Evitare di utilizzare questi simboli all'inizio delle stringhe di
caratteri, soprattutto se si accede ad una tabella particolarmente
estesa.
Utilizzare le seguenti tecniche dell'ambiente di linguaggio SQL
per migliorare le prestazioni.
- Ridurre il numero di ID utente collegati a un database per evitare di
ricollegarsi al database. L'ambiente di linguaggio SQL associa un
profilo utente e una password a tutte le connessioni remote ai database
stabilite. Se le variabili LOGIN e PASSWORD non corrispondono al
profilo utente e alla password associati con una connessione aperta, la
connessione viene chiusa e ristabilita e i valori di LOGIN e PASSWORD vengono
associati alla connessione che è stata riaperta.
- Utilizzare le variabili START_ROW_NUM e RPT_MAX_ROWS di Net.Data
per ridurre la dimensione delle tabelle restituite. Se, su
un'istruzione SELECT SQL, la serie di risultati contiene centinaia di
record, restituire una serie secondaria della serie di risultati al browser
utilizzando START_ROW_NUM come un cursore di scorrimento e RPT_MAX_ROWS per
limitare il numero di record restituiti. Net.Data riformula ogni
volta l'interrogazione poichè non esiste conoscenza dello stato delle
operazioni. E' possibile tuttavia utilizzare il supporto di
Net.Data per le macro persistenti per memorizzare la serie di risultati
in una tabella di Net.Data che dura per tutta la transazione.
Consultare Gestione transazioni con macro persistenti per ulteriori informazioni sulle macro persistenti di
Net.Data.
- Prendere in considerazione di chiamare una procedura memorizzata che
utilizzi SQL statico. L'SQL dinamico viene preparato durante
l'esecuzione, mentre l'SQL statico nella fase di
precompilazione. L'ambiente di linguaggio SQL utilizza SQL
dinamico, che consente di eseguire le istruzioni SQL durante l'esecuzione
del programma. Poichè le istruzioni di preparazione richiedono
un'ulteriore tempo di elaborazione, l'SQL statico può rivelarsi più
appropriato.
Notare che, avviando in OS/400 V4R2, il motore di ricerca SQL presenta una
cache di istruzioni preimpostata. Utilizzando la cache, il motore SQL
memorizza tutte le informazioni sulle istruzioni preimpostate e le mantiene in
una memoria estesa su tutto il sistema. Successivamente, quando la
stessa istruzione viene eseguita di nuovo, anche se da un altro utente o da un
altro lavoro, l'esecuzione è più rapida. La cache di istruzioni
preparate per l'intero sistema è parte del normale funzionamento SQL e
non richiede alcuna azione di configurazione o di attivazione. La cache
può ridurre i benefici alle prestazioni dell'SQL statico rispetto
all'SQL dinamico.
[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]