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

古いテーブルの名前を変更してから新しいバージョンを埋めることで、テーブルのダウンタイムを最小限に抑えますか?

    テーブルを直接操作することを避けるために、間接化を使用してください:

    • すべてのインデックス、制約、トリガーなどを含む Client1、Client2、Client3 の 3 つのテーブルがある
    • 類義語 を使用する Client、ClientOld、ClientToLoad などの実際のテーブルを非表示にする
    • 新しいテーブルを生成するには、「ClientToLoad」に切り捨て/書き込みます
    • 次に、トランザクションでシノニムを削除して作成し、
      • クライアント -> ClientToLoad とは
      • ClientOld -> Client とは
      • ClientToLoad -> ClientOld とは

    SELECT base_object_name FROM sys.synonyms WHERE name = 'Client' を使用できます 現在の間接化が何であるかを解明する

    これは、SQL Server のすべてのエディションで機能します。もう 1 つの方法は、エンタープライズ エディションが必要な「パーティションの切り替え」です



    1. 列を削除しても列参照が完全に削除されるわけではありません-postgresql

    2. RAISERROR でメッセージを連結する

    3. MySQL整数とDateTimeインデックス

    4. WHERE句で定数が(同じ値を持つ)パラメーターに置き換えられた場合、クエリが大幅に遅くなるのはなぜですか?