SQL Créer un index


Exemple

CREATE INDEX ix_cars_employee_id ON Cars (EmployeeId);

Cela créera un index pour la colonne EmployeeId dans la table Cars . Cet index améliorera la vitesse des requêtes demandant au serveur de trier ou de sélectionner par valeurs dans EmployeeId , telles que les suivantes:

SELECT * FROM Cars WHERE EmployeeId = 1

L'index peut contenir plus d'une colonne, comme dans la suite;

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

Dans ce cas, l'index serait utile pour les requêtes demandant de trier ou de sélectionner toutes les colonnes incluses, si l'ensemble des conditions est ordonné de la même manière. Cela signifie que lors de la récupération des données, il peut trouver les lignes à récupérer à l'aide de l'index, au lieu de parcourir la table complète.

Par exemple, le cas suivant utiliserait le deuxième index;

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

Si l'ordre diffère, l'index n'a pas les mêmes avantages que dans la suite;

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

L'index n'est pas aussi utile car la base de données doit récupérer l'index complet, sur toutes les valeurs de EmployeeId et de CarID, afin de déterminer quels éléments ont OwnerId = 17 .

(L'index peut toujours être utilisé; il se peut que l'optimiseur de requêtes trouve que récupérer l'index et filtrer sur OwnerId , puis récupérer uniquement les lignes nécessaires est plus rapide que de récupérer la table complète, surtout si la table est grande.)