Tipi di indice in Microsoft SQL Server

Tipi di indice in Microsoft SQL Server
Un indice ci aiuta a cercare un record particolare nel database. Uno dei componenti chiave delle funzionalità di gestione dei dati del server SQL è il suo supporto per l'indicizzazione che consente agli sviluppatori e agli amministratori di ottimizzare le prestazioni delle loro query e migliorare l'efficienza complessiva dei loro database.

Discuteremo le varie categorie di indici nel server Microsoft SQL. I principali tipi di indici sono: indici cluster, indici non cluster, indici BTREE e indici univoci.

Tipi di indici nel server Microsoft SQL

Indice cluster

Un indice cluster definisce la disposizione fisica effettiva dei dati all'interno di una tabella. Ogni tabella nel server SQL può avere un solo indice cluster e l'indice deve essere creato su una colonna o un set di colonne univoca, non null. Poiché un indice cluster determina il layout fisico di una tabella, viene spesso utilizzato per le tabelle che sono spesso cercate in base alla loro chiave primaria o ad altri valori univoci.

Creiamo prima una tabella e inseriamo i valori in essa usando i seguenti comandi SQL:

INSERT IN Clienti (Customer_id, Customer_Name, Customer_Email, Customer_Phone)
Valori (1, 'Somdeb Nath', '[email protected] ',' 3532626 '),
(2, "Jina Pal", "[email protected] ',' 555678 '),
(3, 'Anita Guha', '[email protected] ',' 4449912 '),
(4, 'Krishna Kumar', '[email protected] ',' 716781497 ');

Diamo un'occhiata a un esempio di indice cluster. Per creare un indice cluster sulla colonna "Customer_id", possiamo utilizzare la seguente query SQL:

Crea indice clusterd idx_customers_customer_name su clienti (customer_name);

Ciò crea un indice cluster sulla colonna Customer_Name in cui i dati nella tabella sono fisicamente ordinati in base ai valori nella colonna Customer_Name.

Per recuperare tutti i clienti il ​​cui nome inizia con la lettera "A", possiamo usare la seguente query SQL:

SELEZIONARE *
Dai clienti
Dove customer_name come 'a%'
Ordine di Customer_name;

Produzione:

customer_id customer_name customer_email customer_phone
1 3 Anita Guha [email protected] 4449912

Indice non cluster

È un tipo di indice che non influisce sull'ordine fisico dei dati in una tabella. Un indice non cluster produce una struttura di dati indipendente che memorizza la chiave dell'indice e il puntatore alla riga dei dati associati nella tabella. Ciò consente alle query di individuare rapidamente le righe di dati pertinenti in base ai valori nell'indice. A differenza degli indici cluster, le tabelle nel server SQL possono avere più indici non cluster e l'indice può essere creato su qualsiasi colonna o set di colonne nella tabella.

Un esempio di un indice non cluster è il seguente:

Crea indice non clusterd idx_customer_email
Su clienti (Customer_Email);

Ciò crea un indice non cluster nella colonna "Customer_Email" in cui i dati nella tabella rimangono fisicamente non ordinati, ma l'indice memorizza una copia ordinata dei dati nella colonna "Customer_Email".

Per recuperare tutti i clienti il ​​cui indirizzo e -mail include il "Gmail.com ”dominio, possiamo utilizzare la seguente query SQL:

SELEZIONARE *
Dai clienti
Dove clienti_email come '%gmail.com%'
Ordine di Customer_name;

Produzione:

customer_id customer_name customer_email customer_phone

Qui, nessun cliente ha un'e -mail che contiene il "Gmail.com ”dominio, quindi il campo di output è vuoto.

Indice btree

Un indice BTREE è un modo per organizzare i dati in una struttura che ricorda un albero. Ogni nodo nell'albero contiene una gamma di valori chiave e ogni nodo foglia contiene un puntatore alla riga dei dati corrispondente. Gli indici BTREE sono comunemente utilizzati nel server SQL perché consentono una ricerca e l'ordinamento efficienti di grandi quantità di dati. Sono particolarmente utili per le query che coinvolgono ricerche di intervallo o operazioni di smistamento. Ad esempio: stipendi, numeri di telefono, ecc.

Un esempio di creazione di un indice BTREE sulla colonna "Customer_Phone" è il seguente:

Crea indice idx_customer_phone
Su clienti (customer_phone);

Ciò crea un indice B-Tree sulla colonna "Customer_Phone" in cui i dati nell'indice sono archiviati in una struttura simile a un albero, con ciascun nodo contenente un intervallo di valori e puntatori agli altri nodi.

Ora, vogliamo recuperare tutti i clienti il ​​cui numero di telefono inizia con il codice area di "555" utilizzando la seguente query SQL:

SELEZIONARE *
Dai clienti
Dove customer_phone come '555%'
Ordine di Customer_name;

Produzione:

customer_id customer_name customer_email customer_phone
1 2 Jina Pal [email protected] 5555678

Indice univoco

È un tipo di indice che garantisce che non ci sono due righe in una tabella abbiano lo stesso valore chiave. Ciò può essere utile per far rispettare l'integrità dei dati e prevenire i record duplicati in una tabella.

Un esempio di creazione di un indice univoco sulla colonna "Customer_Email" è il seguente:

Crea indice idx_customer_email_new
Su clienti (Customer_Email);

Ciò crea un indice univoco sulla colonna "Customer_Email" in cui l'indice applica un vincolo che garantisce che non ci sono due righe nella tabella possano avere lo stesso valore nella colonna "Customer_Email".

Ora, inserisci un nuovo cliente nel tavolo con il "[email protected] "e -mail e recuperalo utilizzando la seguente query SQL:

INSERT IN Clienti (Customer_id, Customer_Name, Customer_Email, Customer_Phone)
Valori (5, 'Lili Doe', '[email protected] ',' 333-333-3333 ');
Selezionare *
Dai clienti in cui Customer_Email come "L%";

Produzione:

customer_id customer_name customer_email customer_phone
1 5 lili doe [email protected] 333-333-3333

Conclusione

Gli indici svolgono un ruolo importante nell'ottimizzazione delle prestazioni dei database SQL Server. Comprendere i diversi tipi di indici può aiutare gli amministratori del database a scegliere il tipo di indice più appropriato per le loro applicazioni. Creando e mantenendo efficacemente gli indici, le aziende possono garantire che i loro database stiano eseguendo in modo efficiente, consentendo loro di prendere decisioni basate sui dati e fornire un servizio migliore ai propri clienti.