gpt4 book ai didi

如果第一个结果为假,mysql sleep 将无法工作

转载 作者:行者123 更新时间:2023-11-30 22:19:27 25 4
gpt4 key购买 nike

mysql> select * from users where id=0;
Empty set (0.00 sec)

mysql> select * from users where id=0 and sleep(5);
Empty set (0.00 sec)

mysql> select * from users where id=0 and benchmark(1000000,sha1(1));
Empty set (0.39 sec)

mysql> select * from users where id=0 xor sleep(5);
Empty set (1 min 5.02 sec)

当id=0时,用户不存在。为什么第二个查询不睡 5 秒?当我使用benchmark(1000000,sha1(1))xor sleep(5)时,为什么会休眠?

谢谢。

最佳答案

这称为“短路”,它被认为是几乎所有数据库和几乎所有编程语言的一个特性。

不需要执行的逻辑不执行。它与 sleep() 无关。当引擎已经知道答案时,最好停止执行代码。

我不认为在单个查询中强制执行 sleep() 是个好主意。 SQL 查询旨在成为过程性的。它们描述结果集,查询引擎生成适当的代码。 sleep() 不在 SQL 结果集范围内。

我会建议——如果确实需要 sleep()——你可以在脚本中用一个单独的步骤来完成。

关于如果第一个结果为假,mysql sleep 将无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37089793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com