データベースに履歴テーブルを追加しました。もともと私はDeletedというビットを追加し、その行が削除された場合は1に更新するつもりでした。それ以外の場合は、各行が更新されます。
次に、誰がいつ何を削除したかをログに記録する必要があると通知されました。そこで、Nullable[DeletedBy][DeletedOn]フィールドを追加しました。この時点で、これによって削除済みビットが冗長になるのではないかと思っていました。どの行が削除されているかを確認したい場合は、テーブルをクエリして、DeletedByがNullでない場所を確認するだけです。
私はこの質問で、より良い実践であると尋ねることを意図しました:
余分なビット列がある
すでに存在するNULL可能列を使用して、削除された行を識別します
しかし、私はこれが好みのものだと思い始めています。代わりに私の質問は、どちらがより効率的ですか?このテーブルが大きくなった場合、実行するとパフォーマンスが向上しますか?
Select * from MyTable where [Deleted] = 1
以上
Select * from MyTable where [DeletedBy] is not null