【发布时间】: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