sql >> Database >  >> RDS >> Sqlserver

Een recursieve CTE toepassen op gegroepeerde tabelrijen (SQL-server 2005)

Enkele dingen om te proberen

  • In plaats van mee te doen met elke rij en filter de resultaten in je waar-clausule, zou je kunnen proberen of het verminderen van het aantal records direct in de samenvoeging de zaken versnelt?
  • Voeg een dekkingsindex toe aan PersonKey, RoomKey, CheckOut &Row en kijk of dit de prestaties verbetert.

SQL-verklaring

;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. Voortschrijdend gemiddelde op basis van tijdstempels in PostgreSQL

  2. SQL Server 2008 - Toevoegen aan tekenreeks in bepaalde positie binnen naamkolom

  3. Meerdere updates in MySQL

  4. SQL SERVER 2016 – Uitvoeringsplannen vergelijken