[英]How can I improve performance of soft-deletion in django?
我有一组由 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 倍?
将删除的项目存储在单独的表中?
复制自另一个讨论。
“查询变得非常复杂” - 选择时使用视图而不是表格。 “查询会随着时间变慢” - 使用过滤索引,而不是常规索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.