我在SO中查看有关Django中随机查询集的一些帖子。我能找到的只是order_by('?')
根本不是快速有效的,但我的经验并没有这么说。
我有一个包含30.000个条目的表格(最终作品将有大约200,000个条目)。我可以创建单独的表,每个表大约10-15k条目。
所以,我希望能够非常快速有效地随机获得100个(可能是200个)项目。 创建100个随机数列表的想法在我看来还不够好,因为有些PK会丢失(因为删除等等)。
并且,我不想生成随机数,然后是99个以下项目。
我将使用Postgresql(没有特殊原因......如果他们更好,我可以选择其他)。
我测试了order_by('id')[:100]
,看起来非常快(我认为)。它只花了?每个列表0.017秒。
答案 0 :(得分:1)
ORDER BY random()
LIMIT n
是一种有效的方法,但慢,因为必须考虑表格中的每一行 这仍然很快,有30 k行,但有30 M行..不是那么多。
我建议这个相关的问题:
Best way to select random rows PostgreSQL