排除Django性能问题

时间:2018-08-08 19:09:33

标签: sql django postgresql

我有word模型和phrase模型

class Word(models.Model): 
        checked = models.BooleanField(default=False)

class Phrase(models.Model):
    words = models.ManyToManyField(Word, null=True,related_name = "phrases")

Word模型具有属性checked,并且与phrase的多对多连接

我有一个查询,像这样:

Phrase.objects.exclude(words__checked=True).filter(words__group__pk__in = groups_ids)

但是它在大型数据集上的运行速度确实非常慢,而且问题出在排除部分,原因是没有它-运行足够快 所以我发现我应该在这里使用原始sql的建议, Performance issue with django exclude

那么,如何用原始sql重写这句话?

(由于需要,我需要此查询同时运行postgres和mysql,或者如果一个查询不能达到此要求,则我将需要两个查询,postgres查询具有更高的优先级)

到目前为止,我已经尝试使用.extra语法,但是它没有用,所以在这里询问。

0 个答案:

没有答案