繁体   English   中英

如何提高 django 中软删除的性能?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM