SQL优化(mysql5.7)

1.mysql常用数据类型

数值类型长度有符号范围无符号范围
TINYINT1字节(-128,127)(0,255)
INT4 字节(-2 147 483 648,2 147 483 647)(0,4 294 967 295)
BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)
字符类型长度
VARCHAR0-65535字节
时间类型长度范围
DATETIME51000-01-01 00:00:00~9999-12-31 23:59:59
TIMESTAMP41970-01-01 00:00:00~2038-01-19 11:14:07

计算有效索引长度时需要用到这些类型对应的字节长度

2.explain
具体explain怎么用,列select_type、table、partitions、type、possible_keys、key、key_len、ref、rows、filtered和extra具体是什么意思,有什么样的值,自己去查下。推荐看【高性能mysql】

3.常遇到慢SQL场景

  • 没有加索引
    explain分析下,添加合适索引即可
  • 一次查询数据过多(之前见过一次出几万条的,有点可怕)
    分批查询
  • left join太多表即使是ref级别,查询依旧会慢
    只能拆复杂SQL,用多次查询去替代
  • where时列作为表达式一部分,或者对列使用函数,都不走索引
    where时列不要作为表达式的一部分,也不要用函数计算列,比如id + 1=5等

4.注意事项(想起来再加吧)

  • 添加索引时,先看下区分度,count(distinct temp)/count(temp) 越接近1越好

5.博客推荐
https://www.cnblogs.com/xuanzhi201111/p/4554769.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值