如何实现不调用 count(*) 的分页器

2024-04-14

我正在开发一个具有 MySQL innodb 后端的 django 网站。我们的几个表中有数十万条记录,这导致管理员出现一些站点稳定性/性能问题。具体来说,django 喜欢在创建分页器时进行 count(*) 查询,这会导致很多问题。

在 Django 1.3.x 中,他们开始允许提供自定义分页类。因此,我有兴趣找到一种方法来适当加速或消除这些查询。到目前为止,我一直在查看这两页:http://code.google.com/p/django-pagination/source/browse/trunk/pagination/paginator.py http://code.google.com/p/django-pagination/source/browse/trunk/pagination/paginator.py https://gist.github.com/1094682 https://gist.github.com/1094682并没有真正发现它们就是我正在寻找的东西。任何建议、帮助等。将不胜感激。


您可以在分页器中定义 _count 变量

  paginator = Paginator(QuerySet, 300)
  paginator._count = 9000 # or use some query here

这是 django 分页器代码的一部分,可帮助您了解此变量的作用以及页数计数的工作原理

def _get_count(self):
    "Returns the total number of objects, across all pages."
    if self._count is None:
        try:
            self._count = self.object_list.count()
        except (AttributeError, TypeError):
            # AttributeError if object_list has no count() method.
            # TypeError if object_list.count() requires arguments
            # (i.e. is of type list).
            self._count = len(self.object_list)
    return self._count
count = property(_get_count)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现不调用 count(*) 的分页器 的相关文章

随机推荐

  • 更改旋转箭头,Appcompat v21

    i have activities which i themed with my custom theme but for spinner i choosed to style it with Appcompat v21 but i got
  • 是否有适用于 Microsoft Edge 浏览器的 Selenium WebDriver?

    截至本文发布之日 Microsoft Edge 这个名称刚刚被正式宣布为新 Windows 10 的默认浏览器 现在问这个问题可能还为时过早 但我想知道是否有新的 Selenium WebDriver 可用 如果没有 是否有任何说明我们可能
  • 计算分数的Java程序

    该程序的目的是获取一个分数的两个用户输入 从用户接收一个运算符 然后获取第二个分数的另外两个用户输入 该程序必须检查两个分数中使用的数字是否在 0 99 之间 并且分母非零 该程序还必须确保用户输入有效的运算符 我现在面临的唯一问题是我的变
  • 是否有可以在 form_div_layout.html.twig 中使用的变量的完整列表?

    我想获取Symfony表单主题文件form div layout html twig中可用的所有变量 我阅读了Symfony官方文档并在网上搜索 但找不到任何有用的信息 有人可以帮助我吗 那么 您可以通过迭代上下文来获取每个块中的所有可用变
  • 相同视图和浏览器版本中不同的 IE XML/XSL 行为,但使用不同的域用户帐户

    我们的一位用户在尝试访问我们的 Web 应用程序视图之一时遇到问题 IE9 行为在 6 8 和 9 中显得一致 但在域帐户之间不一致 对于该特定用户的 Windows 域帐户 无论使用哪些凭据来访问我们的应用程序 或者使用哪台机器的浏览器
  • 在 init 上创建 django 表单

    如何在表单初始化函数中添加字段 例如在下面的代码中我想添加一个配置文件字段 class StaffForm forms ModelForm def init self user args kwargs if user pk 1 self f
  • DocumentDb IN 子句中的最大项目数

    我在文档中找不到任何地方提及 DocumentDb 中 IN 关键字支持的最大项目数 我会假设有一个限制 任何人都可以在引用的文档中指出吗 DocumentDB 实际上消除了所有限制 将其提高到我们预计用户无法超越的水平 因此不再记录它们
  • 将 Team Foundation Server (TFS) 与 Xcode 连接

    我是 Xcode 和 TFS 的新手 有人可以解释一下如何将 TFS 2013 与 Xcode 连接来维护存储库 或者给我一个从一开始就包含完整详细信息的链接吗 这个想法是使用 Git 作为版本控制 并将更改推送到 TFS 中托管的中央存储
  • 将 pandas 中的句子拆分为句子编号和单词

    我有一个像这样的熊猫数据框 Text start end entity value I love apple 7 11 fruit apple I ate potato 6 11 vegetable potato 我尝试过使用 for 循环
  • 如何在 C# 中将 DataRowView 转换为 DataRow

    我想使用拖放 但我不知道如何将信息从 DataGridView 控件拖动到 DataGridView 或 ListBox 我有一个链接http www codeproject com KB cpp DataGridView Drag n D
  • 如何取消引用作为空接口传递的指针值?

    我有一个方法target interface 在我用于数据库访问的类型上 例如 func c client Query query someType target interface error return c db Query quer
  • 从 SQLAlchemy 中的时间戳选择日期

    我将 SQLAlchemy 与 python 一起使用 我想从列类型时间戳中选择日期 以执行此查询 SELECT DATE record date FROM Users 我通过 sql alchemy 编写了这段代码 但它将返回时间戳 se
  • iOS7 侧边菜单状态栏颜色过渡。就像在 iOS7 Facebook 应用程序中一样

    iOS7 Facebook 应用程序有一个右侧菜单 可以通过从右向左滑动或单击右上角的按钮来显示 打开此菜单时 会出现颜色过渡在整个关闭时状态栏从蓝色变为黑色 反之亦然 此图像并排显示两个状态栏 https i stack imgur co
  • Jackson json 格式的 zoneddatetime

    我需要定义 ZonedDateTime 的 JsonFormat 其中时间在 xml 消息中定义 我添加了 Jackson jar 来格式化 ZonedDateTime com fasterxml jackson datatype jsr3
  • YUI Compressor 中 JQuery 文件的压缩问题

    我正在尝试使用 YUI 压缩器缩小一些文件 然而 我似乎在两行代码上遇到了错误 这阻止了压缩 js 文件用于jcarousel精简版 http www gmarwaha com jquery jcarousellite 包含 1 个错误 我
  • Xcode 版本 12.0.1 无法打开 .workspace 文件

    Okay I updated my mac os to Catalina today as well as updating the xcode version to 12 0 1 I am now unable to get the wo
  • Android Ant 包含 Java 库项目

    我正在尝试使用 Ant 编译一个 Android 项目 以便它可以与构建机器一起工作 但我遇到了问题 我总共有五个项目 三个只是 java 库项目 另外两个是实际的 Android 项目 实际上只有一个项目被编译和安装 但它从其他项目中提取
  • 如何获取给定字符串的子字符串直到第一次出现指定字符?

    这个问题是针对perl的 例如 如果我有 hello world 指定的字符是 那么我想要的结果是 hello See perldoc f index http p3rl org index x hello world y substr x
  • 如何使用 jQuery 更改单选按钮的复选框?

    如何使用 jQuery 更改单选按钮的复选框 var checkbox myCheckbox checkbox replaceWith
  • 如何实现不调用 count(*) 的分页器

    我正在开发一个具有 MySQL innodb 后端的 django 网站 我们的几个表中有数十万条记录 这导致管理员出现一些站点稳定性 性能问题 具体来说 django 喜欢在创建分页器时进行 count 查询 这会导致很多问题 在 Dja