【发布时间】:2019-12-20 07:23:21
【问题描述】:
我需要生成一个包含 50 个项目的随机列表,以发送到前端以显示登录页面。着陆页已经加载得太慢了,所以任何优化都会很棒!
鉴于预先存在的性能问题和该表的大尺寸,我想知道哪种实现是更好的做法,或者差异是否可以忽略不计:
选项 A:
unit_ids = list(units.values_list('id', flat=True).distinct())
random.shuffle(unit_ids)
unit_ids = unit_ids[:50]
选项 B:
list(units.values_list('id', flat=True).order_by("?")[:50])
我担心的是,根据 django 文档,order_by('?')“可能既昂贵又缓慢”
https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.order_by
我们正在使用 MySQL 数据库。我尝试搜索有关实施的更多信息,但我没有看到比文档中的内容更具体的内容。救命!
【问题讨论】:
-
视情况而定。首先......表中有多少行?有
TEXT列吗?你会展示多少? (显然是“50”)您在客户端中有 ID 列表吗?如果没有,获得这样的成本是多少?
标签: python mysql django optimization