1.mysql常用数据类型
数值类型 | 长度 | 有符号范围 | 无符号范围 |
---|---|---|---|
TINYINT | 1字节 | (-128,127) | (0,255) |
INT | 4 字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) |
BIGINT | 8 字节 | (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) |
字符类型 | 长度 |
---|---|
VARCHAR | 0-65535字节 |
时间类型 | 长度 | 范围 |
---|---|---|
DATETIME | 5 | 1000-01-01 00:00:00~9999-12-31 23:59:59 |
TIMESTAMP | 4 | 1970-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越好