加速SQL中的GROUP BY子句(Python / Pandas)

时间:2018-05-24 16:20:08

标签: python sql performance pandas

我已经彻底搜索过这个网站,但却找不到适合我的解决方案。我在python中编码,并且几乎没有SQL知识。我目前需要创建一个代码来从SQL数据库中提取数据,并组织/汇总它。我的代码如下:(为了数据安全目的,它已被清除)

bash: ./configure: No such file or directory

即使我的限制设置为5,查询也需要15分钟才能运行。在添加GROUP BY子句之前,它将在10秒内以LIMIT 5000运行。我想知道,因为我知道我的SQL不是很好,如果有人对可能导致延迟的地方有任何了解,以及要做出的任何改进。

编辑:我不知道如何查看SQL查询的性能,但如果有人也可以通知我,我可以发布脚本的性能。

2 个答案:

答案 0 :(得分:0)

关于加快工作流程,您可能有兴趣在这篇文章中查看我的答案的第3部分:https://stackoverflow.com/a/50457922/5922920

如果您想在使用分布式文件系统时保留类似SQL的界面,可能需要查看 Hive Pig Sqoop < / em>除 Hadoop Spark 之外。

此外,为了跟踪SQL查询的性能,您始终可以在适当的时候跟踪客户端代码的执行时间。

例如:

import timeit

start_time = timeit.default_timer()

#Your code here

end_time = timeit.default_timer()

print end_time - start_time 

或者使用这些工具深入了解正在发生的事情:https://stackify.com/performance-tuning-in-sql-server-find-slow-queries/

答案 1 :(得分:0)

我认为延迟是因为SQL首先运行groupby语句然后运行其他所有语句。因此,它会通过您的整个大型数据集对所有内容进行分组,然后再次通过它来提取值并进行计数和求和。

如果没有groupby,它就不必在开始生成结果之前解析整个数据集 - 它会直接跳转到求和并计算你想要的变量。