Si votre index n'est pas utilisé, cela indique généralement l'un des deux problèmes suivants :
-
Conditions de prédicat non sargables, telles que
WHERE DATEPART(YY, Column) = <something>
. L'encapsulation de colonnes dans une fonction compromettra ou éliminera la capacité de l'optimiseur à utiliser efficacement un index. -
Colonnes non couvertes dans la liste de sortie, ce qui est très probable si vous avez l'habitude d'écrire
SELECT *
au lieu deSELECT specific_columns
. Si l'index ne couvre pas votre requête, alors SQL Server doit effectuer une recherche RID/clé pour chaque ligne, une par une, ce qui peut tellement ralentir la requête que l'optimiseur décide simplement de faire une analyse de table à la place.
Voyez si l'un d'entre eux pourrait s'appliquer à votre situation ; si vous êtes toujours confus, je vous recommande de mettre à jour la question avec plus d'informations sur votre schéma, les données et les requêtes lentes. 500 Mo est très petit pour une base de données SQL, cela ne devrait donc pas être lent. Publiez également le contenu du plan d'exécution.