当数据库表有很多行时,Django的管理列表视图变得相当慢。这是因为Django paginator默认使用(慢)PostgreSQL COUNT
查询。如何加快Django的管理页面与PostgreSQL计数估计?
由于估计会被罚款,我们和它的速度更快,例如: SELECT reltuples FROM pg_class WHERE relname = "my_table_name"
有段来修复这个问题,但它是我不清楚如何实际使用它: https://djangosnippets.org/snippets/2593/
此外,该代码段不应该用于过滤结果。这是因为上面显示的估算数量在这里不起作用。有没有另一种方法来加快Django管理页面中的过滤列表视图?
我看到如何使用它;但是这两个脚本似乎都不适用于Django 1.10。您的返回错误'CachingPaginator对象没有属性'_count' - 原始脚本返回''LargeTableChangeList'对象没有属性'query_set' - 任何想法? –
感谢您的更新。不幸的是,仍然没有工作。将'_count'重命名为'count'。现在,我得到错误:“如果self.count为None:' - 在您和其他代码片段中调用一个Python对象'时,超出最大递归深度'。 –
我认为我们现在远离了问题的原始范围,即关于如何使用该片段,我认为在这里我们已经充分说明了这一点。请发布一个新问题,说您使用此代码段(包括问题本身的代码)以及错误跟踪 – e4c5