我在我的Django项目中执行以下查询:
for obj in Path.objects.filter(Q(server_name__exact=name),
Q(keywords__overlap=all_words)):
字段keywords
是ArrayField
,我使用overlap
过滤器,它等同于python中的后续内容:
keywords.intersection(all_words) # if keywords is a set
现在的问题是当all_words
是一个小的列表,小于10时,它的工作速度非常快,但当all_words
是一个更大的数组,超过20-30时,它需要很多时间。
这有什么办法吗?我测试了以下其他方法,但它没有任何不同。
for obj in Path.objects.filter(server_name=name):
if all_words.intersection(obj.keywords):