【问题标题】:Django models : Inverted index on timestamp with query for 'n' latest rowsDjango模型:时间戳的倒排索引,查询'n'最新行
【发布时间】:2010-06-28 16:37:11
【问题描述】:

我的日期时间填充了 auto_now=True
数据库是mysql。
范围查询不能直接为我工作。
有没有一个班轮可以做到这一点?

为简单起见,我怎样才能获得 10 行具有最高值的字段(让它成为 Integerfield)?

【问题讨论】:

  • 为简单起见,我怎样才能获得 10 行具有最高值的字段(让它成为 Integerfield)?

标签: mysql django django-models


【解决方案1】:

对于带有整数字段field 的模型Model,这应该可以工作:

top10 = Model.objects.order_by('-field')[:10]

如果想让django在字段上有索引,需要在模型中定义db_index选项:

class Model(models.Model):
    field = IntegerField(db_index=True)

即使您要求最高值,常规数据库索引也应该可以工作。

【讨论】:

  • 有没有更有效的方法来做到这一点,因为这将首先对整个表进行排序,这对于大表来说是昂贵的?
  • 只需要给表添加索引,MySQL会自动使用。
【解决方案2】:

按字段降序排列并限制为 10 个?

ORDER BY fieldname DESC LIMIT 10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多