我们有一个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的Web应用程序中运行此查询,然后绘制结果图表。
答案 0 :(得分:1)
如果您发布样本输出,将有助于我们了解更多信息。您可以按故障类型进行分组,并在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
依旧......
修改强> 添加了日期范围。 日期介于之后,您可以回顾一个特定的范围,例如一周,一个月,不包括其他任何内容。