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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT id1,id2 FROM ma_table WHERE id1 IN (...) AND id2 IN (...) AND id3 IN (...)
J'ai passé la requête dans l'analyseur et j'obtiens le résultat suivant :
Avec la clé
Sans la cléclustered index seek
nombre de lignes 8
taille des lignes 15
cout estimé : 8
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.table scan :
nombre de lignes 8
taille des lignes : 24
cout estimé : 3
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 !
Partager