Bonjour,
Le second indexe n'a que peu de chances d'être utilisé si vous avez effectivement un indexe clusterisé sur la colonne id_etiquette, parce qu'il est très similaire à la définition de cet indexe clusterisé (tout dépend des autres colonnes de la table et de la taille totale de l'indexe par rapport à celui de la table).
Le meilleur indexe pour votre requête sera celui qui permettra d'identifier les lignes à remonter avec le moins de pages lues. Il est donc important d'y placer en premier les colonnes les plus sélectives. Donc comme l'a indiqué aieeeuuuuu, il serait intéressant de connaître les différentes cardinalités de vos valeurs filtrées, ainsi que le volume total de la table (lignes et taille ).
N'oubliez pas l'existence des indexes filtrés (si votre instance est en version 2008 ou supérieure) qui peut sans doute vous aider sur cette requête précisément, par exemple:
CREATE NONCLUSTERED INDEX IDX_FILTRE ON mvttests(date_creation) WHERE id_transaction IN(1,2) AND site='MG' and statutok='True';
Attention, l'utilisation des indexes filtrés est soumise à contrainte (ANSI_NULLS à ON), ce qui peut poser problème...
Partager