我们有一个 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/