首页 > 解决方案 > 查询优化到 mysql 中的日期

问题描述

我在 mysql 比赛中遇到了这个问题,我用选择和比较日期编写了普通的 mysql 查询,但它超过了时间限制?有人有意见如何在这里写出更好的吗?

顺便说一句,我没有关于数据库本身的额外信息,我们不能在这里使用索引(只能从数据库中读取)这是问题陈述..

给定一个名为“bugs”的表,其中包含以下列

(id, token, title, category, device, reported_at, created_at, updated_at). 

查找在“2019-03-01”或之后创建的错误数量。

值得注意的是,created_at 代表了 bug 被持久化到数据库的时间。

您的查询应该生成一个表,其中有一列称为“count”。

标签: mysqlsqldatabaseoptimization

解决方案


“找出有多少错误”

SELECT COUNT(*)

“创建于“2019-03-01”或更高版本。”

WHERE created_at >= "2019-03-01"

(无论数据类型是 DATE、DATETIME 还是 TIMESTAMP,它都有效。)

“值得注意的是,created_at 代表了 bug 被持久化到数据库的时间。”

That just clarifies that `created_at` is the desired column for the problem.

“您的查询应该生成一个表,其中有一列称为“计数”。”

解释1:“table”=表格输出,a la

mysql> SELECT COUNT(*) AS 'count' FROM t_county;
+-------+
| count |
+-------+
|  3482 |
+-------+

解释 2:需要一个实际的表:

CREATE TABLE foo (
    `count` INT NOT NULL
)
    SELECT COUNT(*) AS 'count'
        FROM bugs
        WHERE ... ;

这将创建一个“表”并立即填充它。

“但它超过了时间限制”

解释 1——查询运行太慢。-- 好吧,如果没有看到您的查询,我无法帮助您。

解释 2——测试是定时的。-- 帮不了你。练习,练习。


推荐阅读