1

debugsqlshell从 django 工具栏中找到,您可以使用 manage.py 运行它作为标准 shell 的替代品,我想测试嵌套对象的查询性能。

我在每个查询中都看到了某些输出,但是我怎样才能获得所有查询所经过的时间总和?

下面两种方法,哪个时候我想比较一下。

def stands(self):
    stands = []
    for stand in Stand.objects.all():
        if stand.room.floor.building.fair.pk == self.pk:
            stands.append(stand)

    return stands

第二次使用prefetch_related

def stands3(self):
    stands = []
    for stand in Stand.objects.all().prefetch_related('room__floor__building__fair'):
        if stand.room.floor.building.fair.pk == self.pk:
            stands.append(stand)

    return stands

感谢 joel-goldstick 的提议,cProfile我设法得到了一些确切的数字:

站立():

11 685 649 function calls (10 532 897 primitive calls) in 9.861 seconds

stand3() 使用prefetch_related

1 855 483 function calls (1 839 617 primitive calls) in 1.295 seconds

但是仍然从 debugshell 获得这些数字会很酷,所以如果你知道如何去做,就不要费心回答。

4

0 回答 0