試してみること
- すべてに参加する代わりに 行と where 句で結果をフィルタリングする場合、結合で直接レコードの量を減らすと速度が上がるか試していただけますか?
- PersonKey、RoomKey、CheckOut、Row にカバリング インデックスを追加して、パフォーマンスが向上するかどうかを確認します。
SQL ステートメント
;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
)