mysql cost 计算_MySQL Cost Cost 说人话,怎优化语句?

本文介绍了MySQL在执行SQL语句前如何评估执行计划的Cost,以及如何通过理解Cost来优化语句。通过开启OPTIMIZER_TRACE功能,分析了优化过程,强调优化应先从业务逻辑和语句撰写入手,而非单纯依赖添加索引。
摘要由CSDN通过智能技术生成

76cbf05e6bf089de76697c1ce2c65c3b.png

小文一个数据库新鸟,但脾气比较急?今天有程序员问他新上的业务有没有不好的SQL 语句, 小文没好气的说,怎么看,你们自己写的,问我?

程序员也没好气的回怼 ?  我算是问错人了,估计你也不会看COST ,优化问你算是白瞎了。

到底怎么能快速应付程序员的 ASKING 并且还能技高一筹的回怼他。Follow me.

基本每种数据库,在执行语句前都会评估执行语句的执行计划的 cost ,通过cost 来判断到底目前哪个 prepare plan 更好更快更强?

e6329568edabe2aa4909fa66d582616d.png

大致画了一个图

首先数据库的获知, 1  操作的成本 , 2 是否有替换的方案  3 在众多的方案中找到“最低”的执行计划

上边的查询会包含几个 点  1  JOIN 的次序, 2 访问的方法  3 子查询

那到底怎么评判那个 JOIN 的次序好,方法秒,子查询怎么查,MYSQL 基于 CPU  I/O 两个量来进行计算和最重的判断哪个COST 最低.

那下面问题来了,到底我怎么知道我要访问的表的cost是多少,有没有索引,索引里面怎么设置的。

那就引出 METADATA  数据库表状态, 其中包含了 row ,index 的SIZE, index 的信息, 是否是唯一的索引,  表的大小, 范围的评估 ,基数等等信息,(今天不谈统计信息)

STOP STOP  你巴拉巴拉说了这么多,对我有什么帮助?  小文愤怒到,你就告诉我怎么优化 那个什么鬼 语句?

好的我们先打开 OPTIMIZER_TRACE 功能  (小文:我不知道

MYSQL OPTIMIZER_TRACE),不知道的follow me.</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值