Optimisation, Index Seek plus lent que Table Scan sur clé multiple
Bonjour,
J'ai une table dans laquelle la clé est une combinaison de 3 id, il en resulte la création d'un index cluster sur cette clé primaire. Lorsque je requête cette table j'obtiens un comportement que je ne comprends pas :
un requête du type :
Code:
1 2 3 4
|
SELECT id1,id2
FROM ma_table
WHERE id1 IN (...) AND id2 IN (...) AND id3 IN (...) |
sera très lente (voir plantera le serveur) avec ma clé primaire, par contre si je supprime la clé, la requête est instantanée.
J'ai passé la requête dans l'analyseur et j'obtiens le résultat suivant :
Avec la clé
Citation:
clustered index seek
nombre de lignes 8
taille des lignes 15
cout estimé : 8
Sans la clé
Citation:
table scan :
nombre de lignes 8
taille des lignes : 24
cout estimé : 3
En général un Index seek est plus rapide qu'un table scan ; je n'arrive pas à comprendre comment je peux obtenir l'inverse et surtout avec une telle différence.
J'ai résolu la lenteur en supprimant la clé, je vais recoder une partie de l'appli pour eviter les insertions multiples, par contre j'aimerai bien comprendre la cause pour éviter de reproduire la même erreur.
Merci !