mysql - 如果不满足查询中的条件,mysql 是否会移动到下一行?

标签 mysql performance optimization query-optimization

我想知道执行查询时Mysql操作的顺序。 例如,如果我有这样的查询:

select * from Posts where year>2016 and name like '%A%' and veryExpensiveFunction(this,that) and age>12;

如果不满足第一个条件(年份>2016),mysql 是否会移动到下一行,或者它是否确定所有条件的结果,然后说“哎呀...条件 #1 甚至没有满足”。 ..所以继续到下一行'。看起来如果我在我的条件下有一个非常昂贵的功能,我想把它放在最后。

你的看法是什么。我想它只是一一评估大“与”链中的每个条件......如果不满足......它会继续

最佳答案

一般来说,您要寻找的是查询计划。 MySQL 有一个Explain 语句,它会告诉您它如何评估特定语句。对于 RDBMS 如何评估一个简单的查询,没有简单的答案,因为很大程度上取决于条件中的列是否有索引,以及其他因素(例如最终排序顺序)。我没有方便的 MySQL 服务器,所以我无法提供示例,但是“Explain”的输出会告诉您是否(例如)年份列上有一个索引,该索引用于过滤“年份” > 2016 年”,然后再应用其他标准。

关于mysql - 如果不满足查询中的条件,mysql 是否会移动到下一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41558793/

相关文章:

php - 数据库中的 utf8 - 在 php.ini 中设置 default_charset

mysql - 从相关表中插入具有给定值和值的多行

mysql - 如何在没有工作台的情况下将 .mwb 转换为 .sql

windows - 为什么 Windows 不被认为适合实时系统/高性能服务器?

performance - 有没有比这个更好的方法(性能)计算斐波那契?

php - 有多少 PHP 包含太多?

c# - 显示 MySql 服务器的数据库

json - 我应该在 VS Code 中为 'json.maxItemsComputed' 设置什么?

c++ - 并行计算内存访问瓶颈

c++ - 同时进行优化和可测试性——如何将代码分解成更小的单元