MySQL InnoDB テーブルに支えられた、適度に大きなモデル セット (約 350,000) があります。私は現在、データベースに属性を保存するこれと同様の論理的な削除方法を使用しています。deleted
これらのアイテムの数を表示するビューがあり、論理的に削除されたアイテムのフィルタリングが非常に遅いことがわかりました。
Item.objects.filter(deleted=False).count() -> ~400ms
削除されたオブジェクトを除外しないと、カウントは比較的速くなります。
Item.objects.all().count() -> ~140ms
deleted
不思議なことに、データベースの列にインデックスを追加すると、時間が長くなります。
Item.objects.filter(deleted=False).count() -> ~450ms # indexed on 'deleted'
アプリを 3 倍遅くしないこのソフト削除の方法に代わるものは何ですか?