想知道Django是如何实现ORM查询优化的吗

2024-09-22 16:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我不是python专家,我很好奇django如何优化下面的查询

Model.objects.filter(field = 'abc')[0]

django会智能地将“limit 1”添加到SQL查询中,比如“select * from model where field = 'abc' limit 1


Tags: djangofromfieldsqlmodelobjects智能filter
1条回答
网友
1楼 · 发布于 2024-09-22 16:38:21

这是因为Model.objects.filter(...)实际上并不返回列表,而是返回queryset object。当您执行qset[0]时,它调用querysets上的__getitem__方法,该方法添加limit 1并执行它。这里是the source of that method;当结果已经被缓存或没有缓存时,有各种情况的逻辑,以此类推。你知道吗

相关问题 更多 >