MySQl解释了额外的“Using where”到底是什么意思?

ycggw6v2  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(86)

根据MySQL文档,使用where意味着:WHERE子句用于限制哪些行与下一个表匹配或发送到客户端。
据我所知,这意味着如果你的sql语句有一个where条件,一个'Using where'将出现在你的解释额外信息中。而根据我的经验,这似乎意味着MySQL存储引擎发现索引无法覆盖某些列,并且将不得不检索行数据。例如:


的数据
有谁能解释一下在哪里使用的真实的含义吗?

njthzxwz

njthzxwz1#

我从2001年开始使用MySQL。
我是MySQL优化的顾问。
我开发并提供了关于查询优化的MySQL培训和会议演示,包括解释EXPLAIN输出。
我曾与负责MySQL查询优化器代码的工程师交谈过,并特别问他们“'Using where'在EXPLAIN输出中是什么意思?”
我已经尝试自己阅读MySQL代码(我确实知道如何阅读和编写C代码)。

  • 我还是无法理解 *

我目前的看法是MySQL报告'Using where'不一致。有时这意味着在索引搜索匹配了要检查的行之后,必须对WHERE子句中的表达式进行评估,以便为检查的行提供二次过滤。
但我相信有些情况下查询不符合这个解释,其他时候它似乎只意味着WHERE子句有一个表达式,即使该表达式正在由索引查找进行评估。
我 * 怀疑 * 在查询优化器中有不同的代码路径,使用不同的条件输出'Using where'。但我没有证据。
所以现在我忽略了“Using where”。当我试图优化查询时,它不能指导我。我不能用它来告诉我查询优化得好还是优化得差。

相关问题