私はSQLですべてのものを記録しようとしているので、名前付きのテーブルを追加し、そのlog
中にすべてのものを追加すると考えてlog
ください。テーブルは次のとおりです。
ID
一意識別子 -- PKLogDate
日時 PKIP
NVARCHARAction
NVARCHARInfo
XMLUniqueID
BIGINT
ログイン、権限の確認、ページの表示、オブジェクトへのアクセス、..などのすべてをこのテーブルに記録します
次に、いくつかのログ復元の 実装も必要であると考えました. いくつかのログレコードは復元可能で, いくつかはそうではありません.Log
テーブルには約 800 万個のレコードがありますが, 復元可能なレコードは約 20 万です. したがって, 復元する必要があるたびに, する必要があります. 800 万を選択してから、新しいテーブルを追加し、この新しいテーブルに復元可能なログを追加することにしました: log_restore
:
ID
一意識別子LogDate
日付時刻IP
NVARCHARAction
NVARCHARInfo
XMLUniqueID
BIGINT -- PK
必要なときにOK すべてをログに記録するのは問題ありません。
しかし、ログを表示する必要がある場合: この手順では、テーブルからすべてのレコードを取得し、log
それらをテーブルとマージ (結合) しlog_restore
ます。
したがって、挿入に影響を与えずにこの手順を加速する必要があります(遅くしないことを意味します)、これが私の考えです:
レコードを
log_restore
追加してlog
テーブルに追加する場合も (したがって、select ではユニオンする必要はありません)この選択コマンドでビューを作成
XML の代わりに単純な DataType 列を追加する
単純な DataType 列にクラスター化された PK を追加
BIGINT
あなたのアイデアは何ですか?なにか提案を?