DB2 e disuguaglianza Usi dell'Indice

January 2

DB2 e disuguaglianza Usi dell'Indice


Il sistema di gestione di database DB2, come la maggior parte dei database relazionali, impiega file speciali chiamati indici per velocizzare la ricerca di record. La maggior parte del tempo, i programmi di utilizzare un indice per recuperare un record specifico da una tabella del database; tuttavia, DB2 consente di localizzare più record che rappresentano un intervallo. In quest'ultimo caso, si crea un Structured Query Language dichiarazione che utilizza le disuguaglianze come una maggiore o minore di.

Perché utilizzare un indice?

Senza un indice, un computer deve leggere ogni record in una tabella fino a quando non individua uno che corrisponde un criterio. Ad esempio, un rivenditore online ha una tabella di database che contiene 100.000 clienti. Quando Joe Smith accede con il suo ID cliente, il computer avrebbe dovuto leggere decine di migliaia di record fino a quando non trova la sua. Di per sé, l'operazione richiede pochi secondi; moltiplicato per migliaia di clienti, questo diventa ore di elaborazione aggiuntiva. Un memorizza indice solo gli ID cliente in un file separato organizzato per un rapido accesso. DB2 localizza la posizione del record desiderato nel file dopo aver letto alcuni record di indice; con il numero di posizione, recupera il record nella tabella principale direttamente. Utilizzando un indice, DB2 trova un record in pochi millesimi di secondo, accelerando notevolmente molte attività di database.

Uguaglianza e disuguaglianza

Un tipico programma utilizza una parità per recuperare un record indicizzato da una tabella DB2, come il seguente codice SQL illustrato:

SELEZIONE CUSTOMER_NAME, indirizzo, città, stato FROM clienti WHERE CUSTOMER_ID = '51412';

La clausola WHERE nell'istruzione SELECT identifica il campo customer_id a un valore ID cliente. Di tanto in tanto, si consiglia di vedere i record con un intervallo di valori, come nel seguente istruzione SQL:

SELEZIONE CUSTOMER_NAME, indirizzo, città, stato FROM clienti WHERE CUSTOMER_ID> = '51400';

Qui, l'istruzione tira molti record dal database, a cominciare da quello avente un ID cliente maggiore o uguale a 51400. L'uso della maggiore o uguale a simbolo è un esempio di una disuguaglianza. Anche se una parità recupera record che soddisfano un singolo valore, una disuguaglianza trova record di maggiore o minore valore.

L'operatore LIKE

DB2 utilizza l'indice di una tabella per quanto possibile, anche se dipende clausola WHERE del istruzione SQL. Se l'istruzione ha disuguaglianze, DB2 può ancora utilizzare l'indice, ma l'efficienza può soffrire. L'operatore LIKE illustra come l'indice lavora in diverse situazioni, in effetti creando disuguaglianze con i suoi caratteri jolly, "%" e "_". L'istruzione SQL più efficiente di selezionare un singolo, serie ininterrotta, come il seguente SQL mostra:

SELEZIONE CUSTOMER_NAME, indirizzo, città, stato FROM clienti WHERE CUSTOMER_ID LIKE '514%';

L'affermazione trova tutti i record che hanno customer_IDs che inizia con "514" DB2 trova il primo record che soddisfa questo criterio, recupera tutti i record successivi che corrispondono, poi si ferma. L'istruzione SQL successiva è meno efficiente:

SELEZIONE CUSTOMER_NAME, indirizzo, città, stato FROM clienti WHERE CUSTOMER_ID LIKE '_1400';

Qui, il carattere jolly "_" indica tutti gli ID dei clienti che terminano con "1400", ma che inizia con qualsiasi numero. DB2 deve cercare più dell'indice, trovando tutti gli ID che iniziano con "1", "2" e così via fino alla fine della tabella. L'indice di risparmiare meno tempo in questa situazione.

Indici Multi-Field

Le clausole WHERE di molti istruzioni SELECT specificare più campi. Per migliorare la velocità di questi SELECT, un indice può ospitare più di un campo. Ad esempio, il seguente SQL cerca record utilizzando una combinazione di operazioni di uguaglianza e disuguaglianza:

SELEZIONE CUSTOMER_NAME, indirizzo, città, stato FROM clienti WHERE stato = 'IL' E zip_code> = '60600';

Se spesso recuperare i dati utilizzando gli stessi campi e criteri, creare un nuovo indice che combina i campi. Per la migliore efficienza, mettere i campi parità dell'indice per primo, seguito dai campi di disuguaglianza.