python - 使用 django 模型进行复杂查询
问题描述
我在我的数据库模型中创建了一个包含 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)
我感谢每一个答案
解决方案
在下面试试这个:
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)
谢谢 !
推荐阅读
- html - 创建具有相同大小图像的小图像库
- sonata-admin - Sonata Admin - 在表头中过滤
- c++ - C++ 中的 Visual Studio 解决方案配置值
- python - 按年和月对 Pandas 数据框进行分组
- sql - Teradata SQL - 如何在连字符之前获取所有内容?
- c# - 如何在 MSBuild 参数命令行上添加任务
- mysql - MySQL 在不同的计算机上使用不同的内存
- python - 删除了 Python 2.7.15 并安装了 3.7.1,但 Spyder 仍然是 python 2.7.15
- javascript - JavaScript 图像打印显示空白
- javascript - Dialogflow 使用 express 检测音频不起作用