SQL Creare un indice


Esempio

CREATE INDEX ix_cars_employee_id ON Cars (EmployeeId);

Questo creerà un indice per la colonna EmployeeId nella tabella Cars . Questo indice migliorerà la velocità delle query che chiedono al server di ordinare o selezionare in base ai valori in EmployeeId , ad esempio:

SELECT * FROM Cars WHERE EmployeeId = 1

L'indice può contenere più di 1 colonna, come di seguito;

CREATE INDEX ix_cars_e_c_o_ids ON Cars (EmployeeId, CarId, OwnerId);

In questo caso, l'indice sarebbe utile per le domande che richiedono di ordinare o selezionare da tutte le colonne incluse, se l'insieme di condizioni è ordinato allo stesso modo. Ciò significa che quando si recuperano i dati, è possibile trovare le righe da recuperare utilizzando l'indice, anziché esaminare l'intera tabella.

Ad esempio, il caso seguente utilizzerà il secondo indice;

SELECT * FROM Cars WHERE EmployeeId = 1 Order by CarId DESC

Se l'ordine è diverso, tuttavia, l'indice non presenta gli stessi vantaggi, come nel seguito;

SELECT * FROM Cars WHERE OwnerId = 17 Order by CarId DESC

L'indice non è così utile perché il database deve recuperare l'intero indice, attraverso tutti i valori di EmployeeId e CarID, per trovare quali elementi hanno OwnerId = 17 .

(L'indice può ancora essere utilizzato, potrebbe essere il caso in cui Query Optimizer rileva che il recupero dell'indice e del filtro su OwnerId , quindi il recupero solo delle righe necessarie è più veloce del recupero dell'intera tabella, specialmente se la tabella è grande.)