【问题标题】:Query optimization to comapre dates in mysql查询优化以比较mysql中的日期
【发布时间】:2021-06-22 09:39:46
【问题描述】:

我在 mysql 比赛中遇到了这个问题,我写了普通的 mysql 查询,带有选择和比较日期,但它超过了时间限制? 有谁知道如何在这里写一个更好的?

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

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

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

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

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

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

【问题讨论】:

  • 架构是什么,您尝试过的查询在哪里?
  • i 've written ordinary mysql query
  • SELECT COUNT(id) AS 'count' FROM bugs WHERE created_at >= '2019-03-01' ; @B001ᛦ
  • 没有可用的模式这只是问题陈述@B001ᛦ
  • 您的代码是正确的 - 如果在执行时超过了时间限制,那么这不是查询的错误

标签: mysql sql database optimization


【解决方案1】:

“找出有多少错误”

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.

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

解释1:“table”=表格输出,一拉

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 -- 测试 是定时的。 ——那里帮不了你。练习,练习。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多