我使用DRF并且我有模型Motocycle,其具有> DB中的2000个对象。 Model有一个品牌。我想通过full_name搜索:
queryset = Motocycle.objects.prefetch_related(
"brand"
).annotate(
full_name=Concat(
'brand__title',
Value(' - '),
'title',
)
)
)
我想按full_name过滤,但查询运行速度非常慢:
(1.156) SELECT "mp_api_motocycle"."id"...
不使用分页过滤:
(3.980) SELECT "mp_api_motocycle"."id"...
有一些可能使这个查询更快?
答案 0 :(得分:1)
将full_name注释作为数据库中的列保留,并为其添加索引。
否则,您在计算full_name时进行全表扫描,然后按它进行排序。