带有表d的queryes orm

2024-09-30 16:35:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要建议,这样我的查询速度会更快—因为它占用了太多的时间,并且分割了片段,我的表已经包含了数百万数据,这是在有数百万数据的情况下,这种情况下的最佳选择。 我已经应用了创建进程、索引,但查询速度仍然很慢

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) 

在需要花费太多时间的部分,是提出建议会给我的问题


Tags: 数据df时间情况argsmpquery速度
1条回答
网友
1楼 · 发布于 2024-09-30 16:35:10

您需要使用values而不是only。ORM中的only子句为每个记录创建一个实例,其中values返回所有值的字典

确保在filter子句中的所有列上都有索引

query = Modelo.objects.values(
    'fecha','campo2','campo3'
).filter(
    fecha__date=fecha,
    **argumentos,
)

值得一看实际生成的SQL,并运行EXPLAIN以查看查询速度减慢的地方,从而确保创建了正确的索引以避免完整的表扫描

相关问题 更多 >