Frage

Hat jemand Erfahrung, wenn SQL Server 2008 R2 ist in der Lage automatisch indizierte Sicht übereinstimmen (auch als materialisierte Ansichten bekannt), die Verknüpfungen zu einer Abfrage enthalten?

Zum Beispiel der Ansicht

select dbo.Orders.Date, dbo.OrderDetails.ProductID
from dbo.OrderDetails
join dbo.Orders on dbo.OrderDetails.OrderID = dbo.Orders.ID

Kann nicht automatisch auf die gleiche genaue Abfrage angepasst werden. Wenn ich direkt aus dieser Ansicht with (noexpand) wählen schneller ich tatsächlich eine viel Abfrage-Plan, der einen Scan auf dem Clustered-Index der indizierten Sicht der Fall ist. Kann ich diese passenden SQL Server zu tun automatisch erhalten? Ich habe ziemlich viele Anfragen und Ansichten, und ich möchte nicht die indizierte Sicht jedes Mal manuell verweisen, weil ich einen OR-Mapper verwenden.

Ich bin auf Enterprise Edition von SQL Server 2008 R2.

Edit: Ich fand die Lösung. SQL Server 2008 R2 entspricht nicht indizierte Sichten mit mehr als 2 automatisch verbindet. Wahrscheinlich würde es den Optimierungsprozess verlangsamen zu viel.

Edit 2: Überprüfung dieser 2 Jahre nach der Frage von mir geschaffen wurde, ich glaube nicht, meine Schlussfolgerung richtig war. Materialisierte Ansicht Anpassung ein sehr fragiler Prozess ohne klare Regeln ist, dass ich die Jahre findet über konnte.

Sicherlich ist die folgende eine Rolle spielen:

  • Die Anzahl der Joins
  • Präsenz eines Prädikats
  • Sie Mitglied, um sowohl in der Ansicht und in der Abfrage
War es hilfreich?

Lösung

Ich bin ein wenig verschwommen auf genau das, was Ihre Frage ist; aber ich denke, das wird dir geben, was Sie wollen:

http://msdn.microsoft.com/en-us/library /ms181151.aspx

Es gibt viele seltsame, willkürlich anmutenden Bedingungen, die Grenze, wenn SQL Server einen Blick Index in einer Abfrage verwenden. Diese Seite dokumentiert sie für SQL Server 2008.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top