Einige Dinge zum Ausprobieren
- Anstatt sich allen anzuschließen Zeile und Filtern der Ergebnisse in Ihrer where-Klausel, könnten Sie versuchen, ob die Reduzierung der Anzahl der Datensätze direkt im Join die Dinge beschleunigt?
- Fügen Sie einen abdeckenden Index für PersonKey, RoomKey, CheckOut &Row hinzu und sehen Sie, ob es die Leistung verbessert.
SQL-Anweisung
;with CTE (PERSONKEY, ROOMKEY, CHECKIN, CHECKOUT, ROW)
as (select RU.PERSONKEY,
RU.ROOMKEY,
RU.CHECKIN,
RU.CHECKOUT,
RU.ROW
from ROOMUSAGE RU
where RU.ROW = 1
union all
select RU.PERSONKEY,
RU.ROOMKEY,
RU.CHECKIN,
RU.CHECKOUT,
RU.ROW
from ROOMUSAGE RU
inner join CTE on CTE.ROW + 1 = RU.ROW
and CTE.CHECKIN = RU.CHECKOUT
and CTE.PERSONKEY = RU.PERSONKEY
and CTE.ROOMKEY = RU.ROOMKEY
)