Ich untersuche anhand des READPASTHinweises, die Ressourcensperrung im Finanzsubsystem unserer Anwendung zu verringern.
Es schien ein guter Weg zu sein, da Finanztransaktionsdatensätze immer nur hinzugefügt, nie aktualisiert oder gelöscht werden. Die einzigen Zeilen, die jemals übersprungen würden, sind brandneue Zeilen, die in eine Transaktion eingefügt werden. Sie existieren praktisch nicht nach außen, bis die Transaktion festgeschrieben ist.
Bei Abfragen mit indizierten Ansichten, auf die ich den READPASTHinweis gesetzt hatte, bemerkte ich jedoch eine schlechtere Leistung . Beim Vergleich der Abfragepläne sieht es so aus, als würde der Abfrageoptimierer die indizierte Ansicht nicht verwenden und stattdessen darauf zurückgreifen, sie wie eine normale Ansicht zu behandeln.
Ich bin mir nicht sicher, warum das so ist. Ich stelle mir indizierte Ansichten wie jeden anderen Index vor, bei dem Schlüssel während des Betriebs gesperrt werden können und das Hinzufügen READPASTähnlich funktionieren würde.
SELECT TOP 1 isa.InvoiceId
FROM Financial_InvoiceSummaryAmounts isa WITH (READPAST)
WHERE isa.TotalOwedAmount = 0.0
SELECT TOP 1 isa.InvoiceId
FROM Financial_InvoiceSummaryAmounts isa
WHERE isa.TotalOwedAmount = 0.0
Das Hinzufügen eines NOEXPANDHinweises scheint ebenfalls zu funktionieren, aber ich bin daran interessiert, mehr darüber zu erfahren, warum READPASTdas Abfrageoptimierungsprogramm diese Auswahl überhaupt getroffen hat (als Teil einer vollständigen Antwort).



