Mysql调优

CBO基于成本优化 RBO基于规则优化

执行计划优化
explain关键字需要注意的几个列:
select type 查询类型
type 至少是范围查询range
possible key:可能用到的索引列
key:实际用到的索引列
key_len:所用到的索引长度
rows和filtered都是预估值
using indexi condition表示使用到了索引下推

索引优化
索引面试常问:索引分类 索引数据结构 索引数据结构的选择 回表 最左匹配 索引下推 索引优化 索引失效 聚簇索引和非聚簇索引 存储引擎

最左匹配原则:最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会停止匹配。

查询计划
优化小细节:
1.当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而而不是数据库
2.尽量使用主键查询,而不是其他索引,因为不会回表
3.使用前缀索引
4.union all in or都会使用索引,但是推荐使用in
5.范围列可以用到索引 索引最多用于一个范围列
6.转换会索引失效
7.更新十分频繁得 数据区分度不高的字段不宜建索引
8.能用limit就用limit
9.单表索引尽量控制在5个以内
10.组合索引尽量不要超过5个

count()和count(1)和count(列名)的区别
count(1)和count(
)之间没有区别,因为count(*)count(1)都不会去过滤空值,
但count(列名)就有区别了,因为count(列名)会去过滤空值。

count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。
其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.
count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。**

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值