1
我使用DRF,並且我有模型Motocycle,它在數據庫中有> 2000個對象。模型有一個品牌。我想通過FULL_NAME搜索:註解字段的Django過濾器太慢
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"...
有一些有可能使這個查詢更快?
'full_name'將是一個數據庫列和models屬性,它將在模型保存之前更新?或者我把你誤解爲錯誤?謝謝。 –
是的,它會是模型領域,它會保存更新,它可以說是有點非規範化,以獲得性能 – iklinac
此外,爲什麼你使用prefetch_related如果只有一個品牌,更好使用select_related – iklinac