vw_project ist eine Ansicht, die 20 CTEs beinhaltet, so dass sie mehrmals kommen und 56 SpaltenSQL Server-Abfrage-Verhalten
zurückkehren viele dieser CTEs sind selbst verbindet (die klassische „letzte Zeile pro Gruppe“, die wir in unserem Fall Holen Sie sich das letzte verwandte Objekt Produkt/Kunde/Manager pro Projekt)
Die meisten der Tabellen (möglicherweise 40?) überschreiten nicht 1000 Zeilen, die Ansicht selbst gibt 634 Zeilen zurück.
Wir versuchen, die sehr schlechten Leistungen dieser Ansicht zu verbessern. Wir haben denormalisiert (von TPT zu TPH) und die Anzahl der Joins fast ohne Auswirkung halbiert.
Aber ich verstehe nicht, die folgenden Ergebnisse Ich bin zu erhalten:
select * from vw_Project (TPT)
2 sec
select * from vw_Project (TPH)
2 sec
select Id from vw_Project (TPH , TPT is instant)
6 sec
select 1 from vw_Project (TPH , TPT is instant)
6 sec
select count(1) from vw_Project (TPH , TPT is instant)
6 sec
Ausführungsplan für den letzten (6 sec): https://www.brentozar.com/pastetheplan/?id=r1DqRciBW
Ausführungsplan nach sp_updatestats https://www.brentozar.com/pastetheplan/?id=H1Cuwsor-
Das klingt absurd, ich verstehe nicht, was passiert und es ist schwer zu wissen, ob meine Optimierungsstrategien relevant sind, da ich keine ID habe was rechtfertigt das anscheinend irrationale Verhalten, das ich beobachte ...
Irgendwelche Anhaltspunkte?
Haben Sie einen Ausführungsplan, den Sie mit uns teilen können? – WJS
Sie könnten versuchen, den Plan einer dieser Auswahlen (z. B. die 6 Sek.) [Hier] (https://www.brentozar.com/pastetheplan/) einzufügen, damit jeder sie sehen kann. –
Was ist TPT und TPH? –