MySQL - AND 条件

标签 mysql

假设我有这样的查询:

SELECT bla WHERE foo LIKE '%bar%' AND boo = 'bar' AND whatvr IN ('foo', 'bar')...

我想知道 MySQL 在检索结果时是否会继续检查所有条件。 例如。如果 foo 不是 LIKE %bar%,它会继续检查 boo = 'bar' 等吗?

如果我把不太可能为真的条件放在最后,会不会更快一些?

如果这看起来是个愚蠢的问题,我很抱歉,在 SQL 方面我是一个完全的菜鸟 :)

最佳答案

我不认为有任何关于多个条件是否会短路的保证,但是......

一般来说,您应该将查询优化器视为一个黑盒子,并假设——除非您有相反的证据——它会正确地完成它的工作。优化器的工作是确保尽可能高效地检索请求的数据。如果最有效的计划涉及短路,那么它就会这样做;如果没有,则不会。

(当然,查询优化器并不完美。如果您有证据表明查询没有以最佳方式执行,那么通常值得重新排序和/或重新声明查询以查看是否有任何变化。)

关于MySQL - AND 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449105/

相关文章:

MySQL 导入 - 我可以同时插入或更新吗

javascript - CORS 问题 - "No ' Access-Control-Allow-Origin header 出现在请求的资源上。”

php - 简单的 PDO 查询返回内存大小错误

php - 为客户提供多个数据库

php - 将日期字段留空时,在 MySQL 数据库中将日期设置为 NULL

mysql - tomcat 7 jdbc访问日志阀门不工作

mysql - 从 MySQL 中的另一个表中获取最新行

php - 在本地和生产环境中运行 Faker 会创建不同的 ID 集

mysql - Web 应用程序的数据库测试

PHP mySQL JOIN 并显示(3 个表)