mysql创建数据表慢_MySQL 数据库表上做查询慢的原因-爱可生

本文分析了MySQL在创建数据表和执行查询时出现速度慢的问题,通过(optimizer trace)工具揭示了MySQL优化器在处理SQL时的决策过程。发现MySQL 5.7在处理information_schema.columns这类元数据表时,由于行数估算错误导致选择了低效的执行计划。在MySQL 8.0中,由于数据字典的改进,对元数据表的查询优化有所提升,建议在使用时注意执行计划并考虑使用hint进行调整。
摘要由CSDN通过智能技术生成

问题

在 26 问中,我们看到了如下 SQL 在 MySQL 5.7 中跑得很慢:

e07cec6e1472d1735f4a69c677e9cd05.png

我们还分析了执行计划改写后的 SQL,通过猜测,增加了 hint 来解决问题:

2781449ae878a079e5b74e43593032c4.png

这一期,我们通过工具来分析一下:MySQL 为什么会使用一个低效的执行计划,以致于我们不得已用 hint 来调优 SQL?

实验

我们接着使用 26 问中的环境,使用 optimizer trace 工具,观察 MySQL 对 SQL 的优化处理过程。

a81caaf192b3409a6763bae456327cae.png

我们先调大 optimizer trace 的内存容量(否则 trace 的输出会被截断),然后开启了optimizer trace 功能。

跑完 SQL 后,可以在 INFORMATION_SCHEMA.OPTIMIZER_TRACE 看到 SQL 的优化处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值