一种可能“足够好”的工作方式是(假设您有能力进行计数):选择一个随机索引的列进行排序。以此排序整个查询集。在结果集的顶部和底部之间选择一个范围(例如:1234:1254),并从中获取1个随机结果。在5万行的查询时间上,它大约是一个短暂的时间(尽管tbh可能是rand()的原因),但是就我创建代码而言,我正在尝试将其转换为自己的代码库生产代码的POC,我知道order_by("?")
将杀死我的数据库@api_view(['GET', 'POST'])
def questions_view(request):
if request.method == 'GET':
questions = Question.objects.all().order_by('?').first()
serializer = QuestionListPageSerializer(questions)
return Response(serializer.data)
一种可能“足够好”的工作方式是(假设您有能力进行计数):选择一个随机索引的列进行排序。以此排序整个查询集。在顶部和...之间选择一个范围。