PostgreSQL ArrayField在Djang太慢了

2024-04-26 14:08:24 发布

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

我正在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):

Tags: pathdjangonameinobjforifobjects