python - 如何高效地跨 X 天运行相同的查询?

标签 python mysql

我们有一个 MySQL 数据库,我们用它来衡量自动化测试的成功和失败。现在我们需要查询数据库以找出每天发生了多少次故障以及原因是什么。到目前为止我提出的查询是这样的:

select * from failures 
where time >= '{time}' and time <= '{time} 23:59:59' and cause = '{fail_type} failed'

我对此查询有几个变体。我遇到的问题是我们需要在数据库中查询 1、7 和 56 天的信息。这意味着我分别运行查询 1 次、7 次和 56 次。随着数字的增加,查询的时间会变得很长。我还必须针对每种故障类型运行这些查询中的每一个,这确实增加了查询时间。

有没有更高效的数据库查询方式?到目前为止,我在 Stack 上发现的最接近的问题是这个:

注意:我在基于 Flask 的网络应用程序中运行此查询,然后绘制结果图表。

最佳答案

如果您发布示例输出,它将帮助我们了解更多信息。您可以按故障类型分组,并在您的 where 子句中放置一个日期间隔。

类似于:

SELECT * from tbl_failures
WHERE (cause = '{fail_type} failed') AND (date_field between date_sub(curdate(), interval 7 day) and curdate()))
Group by tbl_failures.Type

7 天图表的相同查询:

SELECT * from tbl_failures
WHERE (cause = '{fail_type} failed') AND (date_field between date_sub(curdate(), interval 1 week) and curdate()))
Group by tbl_failures.Type

等等..

编辑 添加了日期范围。使用date between,您可以回顾特定范围,例如一周、一个月,不包括其他所有内容。

关于python - 如何高效地跨 X 天运行相同的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29749007/

相关文章:

MySql 选择相对相似的日期

Python LIST 函数不返回新列表

python - 如何使用 pandas 创建像索引这样的分层目录?

python - 如何从列表中删除随机元素并将其添加到python中的另一个列表

mysql - Loopbackjs - findById 需要 id 参数

php - 我想打印 $s1 $s2 $s3 中的值而不是变量名称

python - 正则表达式 Python 在样式标签之间删除(包括\n\r)

python - 如何在不清除数据库的情况下测试 Django on_commit Hook ?

mysql - 如何从 hibernate 表中选择多条记录

c++ - 连接MySQL时出现段错误