如何获取Django ORM查询的时间?
我怎么才能知道一个django orm查询花了多少时间?
还有,下面这两个查询哪个会更快?
ShipmentPPTLMapping.objects.get(shipment_id = shipment_id)
或者 ShipmentPPTLMapping.objects.filter(shipment_id = shipment_id)[0]
对于这两个查询,哪个更快呢?
ShipmentPPTLMapping.objects.filter(pptl_id = pptl_id).exclude(bag_seal_status = 'close').count())
或者 ShipmentPPTLMapping.objects.filter(pptl_id = pptl_id,bag_seal_status = 'open').count())
1 个回答
1
一个选择是使用 django-debug-toolbar:它可以测量每个视图中执行的每个查询。
在任何Django应用中,这个工具都是 必不可少 的。
关于其他问题:
我认为它们是等价的。在Django代码中,
get
是通过filter
来获取第一个元素的。这两个也应该是等价的,因为
filter
和exclude
只是filter(Q(...))
和filter(~Q())
的不同名称,而连接查询就像用逗号一样:这些查询是通过AND
连接的。不过,因为一个使用的是"open"
,另一个使用的是"close"
,这可能会影响特定后端的性能,据我所知,这种差异只能通过性能分析来测量。