首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询性能差,取决于“`where`”条件的位置(MySQL)

问查询性能差,取决于“`where`”条件的位置(MySQL)
EN

Database Administration用户
提问于 2022-10-13 12:15:06
回答 1查看 55关注 0票数 -3

有一个查询,在这个查询中,更改where条件的顺序会极大地影响其性能(5kvs700k rows_examined)。

奇怪的是,当我使用explain和explain for connection时,这两个版本的查询都有完全相同的计划。然而,当我运行它们时,被检查的行数却有很大的不同。从我所读到的情况来看,条件的排序并不重要,因为优化器将尝试修复查询,但这里的情况并非如此。我是不是遗漏了什么?

我使用的是MySQL 5.7

EN

回答 1

Database Administration用户

发布于 2022-10-13 21:40:52

对于一个查询,我已经看到了多达6种不同的解释方案。计划各不相同,因为:

  • 查询中的常量很重要。
  • 可以通过ANALYZE TABLE刷新“统计信息”。(经常这样做没有任何区别。)
  • 如果不运行查询,则无法计算“已检查的行”。EXPLAIN给出了一个估计,有时是非常粗略的估计。
  • 如果打开并配置适当的慢速日志,将列出一种情况下“检查的行”和“返回的行”的确切数目。
  • EXPLAIN FORMAT=JSON SELECT ...提供了更多信息。
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/318178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档