如何获取Django ORM查询的时间?

0 投票
1 回答
1002 浏览
提问于 2025-04-18 11:09

我怎么才能知道一个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应用中,这个工具都是 必不可少 的。

关于其他问题:

  1. 我认为它们是等价的。在Django代码中,get 是通过 filter 来获取第一个元素的。

  2. 这两个也应该是等价的,因为 filterexclude 只是 filter(Q(...))filter(~Q()) 的不同名称,而连接查询就像用逗号一样:这些查询是通过 AND 连接的。不过,因为一个使用的是 "open",另一个使用的是 "close",这可能会影响特定后端的性能,据我所知,这种差异只能通过性能分析来测量。

撰写回答