快速有效的随机查询集 - Django

时间:2014-06-23 19:57:09

标签: python django postgresql django-queryset

我在SO中查看有关Django中随机查询集的一些帖子。我能找到的只是order_by('?')根本不是快速有效的,但我的经验并没有这么说。

我有一个包含30.000个条目的表格(最终作品将有大约200,000个条目)。我可以创建单独的表,每个表大约10-15k条目。

所以,我希望能够非常快速有效地随机获得100个(可能是200个)项目。 创建100个随机数列表的想法在我看来还不够好,因为有些PK会丢失(因为删除等等)。

并且,我不想生成随机数,然后是99个以下项目。 我将使用Postgresql(没有特殊原因......如果他们更好,我可以选择其他)。 我测试了order_by('id')[:100],看起来非常快(我认为)。它只花了?每个列表0.017秒。

  • 为什么文档说这不是随机的好操作?
  • 您更喜欢哪种随意?
  • 有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

ORDER BY random()
LIMIT n

是一种有效的方法,但,因为必须考虑表格中的每一行 这仍然很快,有30 k行,但有30 M行..不是那么多。

我建议这个相关的问题:
Best way to select random rows PostgreSQL