我正在使用多种方法通过不同的 django 查询集从 db 获取数据,但我想知道每个查询集的运行时间,如果可能的话还有更好的方法(也许在恒定时间内获取数据!!)
qs = MyModel.objects.order_by('-time')
qs = qs.filter(blah = blah)
为了获得第一个条目,我正在这样做:
entry = list(qs[:1])
first_entry = entry[0]
或获得第 10 个和最后一个条目:
entry = list(qs)
some_entry = entry[9]
last_entry = entry[-1]
但我相信这将花费 O(n) 时间,有没有办法在恒定时间内获得第 n 项?我不想使用 get() 因为我不知道条目的 id 或其他值(已排序),而只知道位置。
我也可以使用注释,但这也需要 O(n) 运行时间。
MyModel.objects.values('date').annotate(min_value=Min('value')).order_by('min_value')[0]
我知道该职位只需要在恒定时间内输入该条目吗?