【问题标题】:Making complex query with django models使用 django 模型进行复杂查询
【发布时间】:2021-06-08 06:39:32
【问题描述】:

我在我的数据库模型中创建了一个包含 6 个连接和 10 列的视图,目前它显示了大约 86.000 行。 我尝试通过 objects.all() 查询所有行,然后根据用户交互进行过滤(POST 发送的表单数据,然后选择适当的 .filter(*args) 查询) 之后,我尝试使用 count() 获取查询集的长度,因为此方法不评估查询。但是由于视图在列上没有索引,所以 count() 方法需要很长时间。

我搜索了实现视图的解决方案,但这在 mysql 中是不可能的。

然后我搜索了一个解决方案,该解决方案可能仅通过在 django 中使用 6 个连接和过滤参数而不是创建视图来替换初始的 .all(),因此索引仍然可用。但我找不到该问题的解决方案。

或者也许将视图中的每一行与另一个表结合起来,以便我可以使用另一个表的索引来更快地查询?:

SELECT * FROM View LEFT JOIN Table ON (View.id = Table.id)

感谢每一个回答

【问题讨论】:

  • 你能给我们看一下SQL吗?也许我们可以提出一些建议,然后你可以回到 Django。

标签: python mysql django mariadb


【解决方案1】:

试试下面这个:

from django.db import models

# I think below is your table structure
class Table(models.Model):
    pass

class View(models.Model):
    table = models.ForeignKey(to=Table)

qs = View.objects.select_related('table').filter(table__isnull=True)
for iterator in qs:
    print(qs)

谢谢!

【讨论】:

    猜你喜欢
    • 2021-07-17
    • 2019-01-05
    • 2015-12-21
    • 1970-01-01
    • 2012-08-24
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多