1
2
您发布的代码中的问题是django不包含自动通过反向关系连接的对象,因此您必须对每个对象进行查询。有个很好的方法可以解决这个问题,比如 Daniel Roseman points out in his blog ! 如果这不能很好地解决您的问题,您还可以看看如何在一个原始SQL查询中获取所有内容… |
2
1
您可以进一步减少查询计数,方法是先获取所有数据ID,然后使用select_related在单个大型查询中获取数据和元数据。这将大大减少查询的数量,但查询的大小可能不实际/太大。比如:
但是,如果可能的话,我建议从Web服务器之外的某个地方预计算提要。如果结果小于1 MB,也许可以将其存储在memcache中。或者,您可以是块上最酷的新孩子之一,并将结果存储在“nosql”数据库中,如redis。或者你可以把它写到磁盘上的一个文件中。 |
3
0
如果您可以更改数据的结构,也许您还可以更改数据存储? “nosql”数据库允许一些结构,比如couchdb或mongodb,实际上在这里很有用。 假设对于每个数据项都有一个文档。文档将具有您的普通字段。您还可以添加一个“元数据”字段,该字段是元数据列表。下面的数据结构是什么?
然后您就可以轻松地访问数据记录并获取所有的元数据。要进行搜索,请向“数据”文档中的字段添加索引。 我在Erlang/OTP的一个系统中使用了mnesia,它基本上是一个带有索引和帮助器的键值数据库。我们大量使用嵌套记录,取得了巨大的成功。 我把这个作为一个单独的答案添加,因为它与另一个完全不同。 |
4
0
另一个想法是使用Celery(www.celeryproject.com),这是一个针对python和django的任务管理系统。您可以使用它异步执行任何长时间运行的任务,而不必占用主应用服务器。 |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |