sql >> Databasteknik >  >> RDS >> Sqlserver

Tillämpa en rekursiv CTE på grupperade tabellrader (SQL-server 2005)

Några saker att prova

  • Istället för att gå med alla rad och filtrera resultaten i din where-klausul, kan du försöka om det går snabbare att minska antalet poster direkt i joinen?
  • Lägg till ett täckande index på PersonKey, RoomKey, CheckOut &Row och se om det förbättrar prestandan.

SQL-uttalande

;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
)



  1. MySQL 8 dela sträng med kommatecken och konvertera den till JSON ARRAY

  2. Giltiga modifierare för SQLites datum/tid-funktioner

  3. Så här fixar du "Endast ett uttryck kan anges i urvalslistan..." i SQL Server

  4. En metod för indexjustering – Del 2