Est-ce que quelqu'un sait quand SQL Server 2008 R2 est capable de correspondre automatiquement à une vue indexée (également appelée vues matérialisées) qui contient des jointures à une requête?La vue indexée de SQL Server ne correspond pas aux vues dont les jointures ne fonctionnent pas
Par exemple, la vue
select dbo.Orders.Date, dbo.OrderDetails.ProductID
from dbo.OrderDetails
join dbo.Orders on dbo.OrderDetails.OrderID = dbo.Orders.ID
Ne peut pas être automatiquement adaptée à la même requête exacte. Lorsque je sélectionne directement à partir de cette vue with (noexpand)
, j'obtiens en fait un plan de requête beaucoup plus rapide qui effectue une analyse sur l'index clusterisé de la vue indexée. Puis-je demander à SQL Server de faire cette correspondance automatiquement? J'ai un certain nombre de requêtes et de vues et je ne veux pas référencer la vue indexée manuellement chaque fois parce que j'utilise un mappeur OR.
Je suis sur l'édition entreprise de SQL Server 2008 R2.
Editer: J'ai trouvé la solution. SQL Server 2008 R2 ne correspond pas automatiquement aux vues indexées avec plus de 2 jointures. Probablement, cela ralentirait trop le processus d'optimisation.
Édition 2: Revoir ce 2 ans après que la question a été créée par moi, je ne pense pas que ma conclusion était correcte. La visualisation matérialisée est un processus très fragile sans règles claires que j'ai pu trouver au fil des ans.
Certes, les éléments suivants jouent un rôle:
- Nombre de jointures
- Présence d'un prédicat
- ordre de jointure, à la fois dans la vue et dans la requête
Cette page est très utile, merci. – usr