Bonjour,
J'ai une requête qui prend, à mon avis, trop de temps à d'exécuter par rapport à ce qu'il pourrait en être avec une véritable optimisation. Voici la requête en question, qui s'exécute en un peu plus de 2 minutes :
La table A contient environ 16 millions d'enregistrements, tandis que B en contient 3 millions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select A.idA, B.idB, A.champDetail1, B.champDetail2 from A inner join B on A.idB = B.idB
A.idA est la PK de A, et B.idB est la PK de B. Il y a sémantiquement une relation de clé étrangère entre A.idB et B.idB, mais, pour des raisons annexes, cette clé étrangère n'est pas implémentée.
La colonne A.idB a cependant été indexée (nonclustered, autres options par défaut).
Voici l'explain plan de la requête :
Je ne comprends pas pourquoi un scan de la PK de A est réalisé, plutôt qu'un scan de l'index positionné sur A.idB.
Un update statistics a évidemment été réalisé manuellement sur A ainsi que B.
Je ne suis pas un spécialiste du tuning SQL-Server, et j'ai uniquement quelques notions de base sous Oracle.
Merci pour votre aide, je reste à votre disposition pour toute info nécessaire !
Partager