J'ai créé une vue indexée (MyView) qui se compose de trois colonnes:SQL Server 2008 R2 et plan d'exécution dans la vue indexée
Table1_ID (int not null)
Object_CreationDate (datetime, null)
Objec_Count(bigint null)
J'ai créé index unique cluster IX_1 sur deux colonnes: Table1_ID
Et Object_CreationDate
Je veux courir deux requêtes:
1.
Select * from [dbo].MyView
where Table1_ID = 10
2.
Select * from [dbo].MyView
where Table1_ID = 10
AND Object_CreationDate <= GETDATE()
requête 1-st court vite (même avec DBCC DROPCLEANBUFFERS()) et utiliser le plan d'exécution simple via l'utilisation MyView et IX_1
requête 2 e exécute pas si vite parce que il utilise le plan d'exécution « vieux » (recherche par plusieurs index dans trois tableaux et mise en boucle imbriquée)
Je comprends mal cette situation. Quant à moi, il est naturel d'utiliser IX_1 et MyView pour la requête 2-nd.
De plus, j'attends cette requête 2 e exécute la même vitesse ou encore plus vite alors 1-er, car il utilise deux colonnes dans la clause where qui sont en index ordonné en clusters.
J'ai essayé course de 2 ème requête with(index=IX_1)
et les statistiques de mise à jour des colonnes, mais toujours le même plan d'exécution.
Est-il possible de forcer l'utilisation de SQL MyView ET IX_1?
J'étonné que vous savez ces propriétés de studio de gestion. –