【问题标题】:MySql query takes too long when sleep() is used in where clause在 where 子句中使用 sleep() 时 MySql 查询耗时过长
【发布时间】:2014-12-18 06:28:09
【问题描述】:

我读过 MySql 中的 sleep(n) 函数,它应该休眠 n 秒,如果未中断则返回 0,如果中断则返回 1。

如果我在 select 子句中使用 sleep() 效果很好。例如,以下查询在 10 秒后返回结果。

SELECT id, sleep(10) FROM versions WHERE id = 123

但是,如果我在 where 子句中使用 sleep(10),查询会花费很长时间。

SELECT id FROM versions WHERE id = 123 OR sleep(10)=1

知道它为什么会这样吗?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    在第一个查询中,它只需要 10 秒的睡眠时间,而在第二个查询中,每个 id 都被检查是否为 123,如果不是,则睡眠 10 秒。

    在 where 子句中使用 sleep 就像检查数据库中的每一行,除了在你的情况下它与值 123 匹配的那一行。

    【讨论】:

      【解决方案2】:

      当您的第一个条件为假时,它将在每一行休眠 10 秒。

      【讨论】:

        猜你喜欢
        • 2021-11-13
        • 1970-01-01
        • 1970-01-01
        • 2016-11-12
        • 2015-04-13
        • 1970-01-01
        • 2019-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多