sql >> データベース >  >> RDS >> Sqlserver

グループ化されたテーブル行に再帰 CTE を適用する (SQL サーバー 2005)

    試してみること

    • すべてに参加する代わりに 行と 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
    )
    



    1. SQLServerデータベースのすべてのテーブルからすべての主キーを削除する方法-SQLServer/TSQLチュートリアルパート65

    2. Mysqlデータベースの多言語カテゴリタイトル

    3. MySQL DATETIME精度(joda-time、Hibernate、org.jadira.usertype、hbm2ddl)

    4. Oracleテーブルの動的パーティション