【问题标题】:How to improve performance in visualizing data from database on admin site of django?如何提高在 django 管理站点上从数据库中可视化数据的性能?
【发布时间】:2011-09-03 14:56:43
【问题描述】:

这是我使用 django 的第一步,所以如果这看起来微不足道,请不要冒犯。

我有一个非常大的表格 mynames(~ 1 000 000 个条目),我想让这个表格在 django 管理站点中可编辑。我按照官方 django 书中的描述连接了一些东西:我有一个模型,我通过admin.site.register(mymodel) 注册了它。我可以在我的管理网站上看到“表格”,我可以点击它来查看第一页的名字。到目前为止很好。当我点击页面底部的“显示下一页按钮”时,查询会一直持续下去。

问题可能出在哪里?

更新:

我在相关列中添加了索引,现在速度很快。我想通过做

name = models.CharField(max_length=100, db_index=True, unique=True)

在模型定义中,该列会有一个索引。但是没有。只有唯一索引。这是应该的方式还是我错过了什么?

【问题讨论】:

  • “接缝永远”?当您从交互式提示 (>>> from app.models import Class; >>> Class.objects.all()) 运行时,数据库获取所有 1,000,000 行需要多长时间?
  • @S.Lott:你给我的命令(我将它们调整到我的应用程序和我的班级)立即提示前 25 个条目或左右,并以点结尾,表明还有更多,我猜.但如果我这样做 len(Class.objects.all()) 似乎需要非常非常长的时间......
  • 多长时间?如果您的查询永远在交互式提示下进行,则您的数据库很慢。你有一个 MySQL 问题,而不是 Django 问题。打开 MySQL 工具并在 SQL> 提示符下输入SELECT * FROM app_class。这需要多长时间?
  • @S.Lott,您的提示为我指明了正确的方向。请参阅我的编辑。谢谢你。我想接受你的回答,但你只发表了评论。 :-)
  • 我还是不知道你的问题是什么。它不断变化。 “这就是它应该的方式吗”。我相信你有证据证明它一定是那样的。你读过docs.djangoproject.com/en/1.3/ref/models/fields/#db-index吗?

标签: python mysql django performance django-admin


【解决方案1】:

如果您粘贴完整的模型类,会更容易看出问题所在。桌子上有指定的顺序吗?如果是这样,您需要创建相应的索引以快速对该字段进行分页。是否在模型的 ModelAdmin 类上设置了 list_display 属性?默认情况下,django 应该根据主键对行进行排序,因此您不需要额外的索引。还要检查您是否覆盖了模型的 __unicode__ 方法,导致在 django admins 表中显示实体时导致额外的数据库查找?

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 2012-08-28
    • 2021-06-16
    • 2011-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多