2016-11-24 9 views
0

パフォーマンスを向上させるために、データベースに非正規化テーブル(ソートテーブル)を作成しました。どのようなオプションを非正規化テーブルに挿入する必要がありますか

  • このテーブルには、毎日の主な関心事
になります(それは、性能を損なう可能性としては)何の制約は、このテーブルのために必要ではありません
  • バッチジョブ(HardDelete)
  • 速度を使用してクリーンアップされます

    バックグラウンドはもともとは、テーブルのサイズが大きいので検索アクションがあります(テーブルAと言う)。 tableAに新しい挿入があるたびに、このnewTableに挿入し、このnewTableに対して検索を行います。このnewTableにはbatchjobが毎日ハード削除されるため、サイズは制御しやすくなります。

    今、このnewTableにデータを挿入するために私が持っているオプションは何ですか?私の現在の選択肢は、tableAにトリガーをかけるか、通常の方法(TableAに挿入した後、このnewTableにデータを挿入するためのサーバーコードを使用)です。スピードを上げるのに役立つ他のオプションはありますか?

  • +2

    ユースケースに合わせても、そうでなくてもよい別のオプションは、インデックス付きのビューです。 https://www.brentozar.com/archive/2013/11/what-you-can-and-cant-do-with-indexed-views/ – mendosi

    答えて

    0

    データがすでにデータベースに到達しているため、トリガーはサーバーサイドコードに追加するよりも高速です。あなたの主な関心事はトランザクション(トリガが失敗した場合どうなるでしょうか?)とトリガのメンテナンス(トリガはあなたが私に尋ねると維持するのが苦痛です)です。

    ロー挿入速度の場合、テーブルのロック設定を確認し、読み取りの安全を無効にし、すべての制約を無効にすることができます。

    関連する問題