python - 使用表数百万数据查询 orm
问题描述
我需要建议,以便我的查询更快,它需要太多并且除了片段之外,我的表已经包含数百万个数据,当有数百万个数据时,这是这种情况的最佳选择。我已经应用了进程、索引的创建,但查询速度仍然很慢
pool = mp.Pool(processes=mp.cpu_count())
results = pool.map(filtar_query,json_f)
def filtar_query(args):
fecha, argumentos = args[0], args[1]
query = Modelo.objects.only('fecha','campo2','campo3').filter(fecha__date=fecha).filter(**argumentos).values('fecha','campo2','campo3')
df= pd.DataFrame(query)
df = df.groupby(fecha)
在花费太多时间的部分是提出建议会给我的查询
解决方案
您将要使用values
而不是only
. ORM 中的only
子句为每条记录创建一个实例,其中values
返回所有值的字典。
确保filter
子句中的所有列都有索引。
query = Modelo.objects.values(
'fecha','campo2','campo3'
).filter(
fecha__date=fecha,
**argumentos,
)
值得查看实际生成的 SQL,并运行EXPLAIN
以查看查询变慢的位置,以确保您创建了正确的索引以避免全表扫描。
推荐阅读
- webpack - PUG 需要图像(webpack)
- machine-learning - seq2seq 模型中测试和推理的区别
- elasticsearch - 富文本文件的本地索引
- spring - 为特定配置文件导入 Spring @Configuration
- c# - 为什么 .net 会在运行时自动处理 urldecode
- sql-server - 在sql server中每n分钟获取一条记录
- tcl - 无法打印放置在“::”之前的 tcl 变量
- javascript - 为什么 console.log 不使用 VS Code 在控制台中显示结果?
- java - 在数据库中搜索 Integer with Like Hibernate
- python - Django'模型匹配查询不存在。' 错误