Py学习  »  Python

用python脚本聚合一个表会更快吗?,或者内置SQL聚合与轮询相结合会更快吗?

Mike Bleedhill • 3 年前 • 1232 次点击  

目前,我有一个小问题,我需要建立一个表格,显示在受尊敬的日子里产生的能量。

我已经使用python和SQL数据轮询结合for循环解决了这个问题,以查看从一天开始到一天结束时产生的能量,两者之间的差异将导致特定一天产生的总能量。但不幸的是,由于SQL数据库中的数据量太大,python函数的速度太慢。

我想知道这是否可以集成到一个SQL查询中,以便在完成聚合后吐出一个表。为了更好地理解表格,我在下面展示了一个例子。

SQL表

日期/时间 价值
24/01/2022 2:00 2001
24/01/2022 4:00 2094
24/01/2022 14:00 3024
24/01/2022 17:00 4056
25/01/2022 2:00 4056
25/01/2022 4:00 4392
25/01/2022 17:00 5219

最后一桌 从上表中,我们可以得出2022年1月24日的发电量为4056(最大)-2001(最小)=2055

日期 价值
24/01/2022 2055
25/01/2022 1163
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128187
 
1232 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Rick James
Reply   •   1 楼
Rick James    3 年前

通常,通过网络发送更多内容所花费的时间会使应用程序解决方案的速度变慢。

这个 GROUP BY 可能需要额外排序,或者如果数据以这种方式排序,则可能是“免费的”。(好的,你说没有索引。)

向我们展示查询和 SHOW CREATE TABLE ; 我们可以帮助建立索引。

一般来说,如果工作是在SQL中完成的,那么为用户编写的代码要少得多。

特别是MySQL,它会在两个方面进行选择

案例1:对数据进行排序 O(N*log N) ,然后对数据进行线性传递;这可能涉及也可能不涉及会增加开销的I/O

案例2:在RAM中建立一个查找表,用于收集分组信息,然后对数据进行线性传递(不需要索引);但你需要这样的东西 O(N*log n) 用于计数/求和/无论分组值是多少。

笔记:

  • 我曾经 N 表格中的数字或行,以及 n 获取输出中的行数。
  • 我不知道会导致优化器选择一种方法而不是另一种方法的条件。

如果将所有数据拖到客户机中,可能会选择其中一种算法。如果您碰巧知道您是在一个简单的整数上分组,那么查找(对于第二种算法)可以是一个简单的数组查找-- O(N) .但是,正如我所说,网络成本可能会降低性能。

编写is SQL非常简单:

SELECT DATE(`date`)  AS "day",
       MAX(value) - MIN(value) AS range
    FROM tbl
    GROUP BY DATE(`date`);