mysql sql 优化 博客园_MySQL SQL优化

MySQL SQL优化

1、建表

1)、主键使用合适的无符号unsigned整型自增(避免数据增加时索引页分裂)

2)、长度固定的字符串字段使用CHAR类型,Varchar会额外使用1或者2个字节(长度小于255使用1字节)存储字符串长度

3)、选择合适的字符串数据类型和日期类型(优先TIMESTAMP,占用4字节)

2、索引

1)、使用单独的列(不对索引进行表达式或者函数运算)

2)、对于BLOB、TEXT或者很长的VARCHAR类型的列,使用前缀索引

3)、多列索引选择合适的索引列顺序(索引列的选择度和最左原则)

4)、能使用覆盖索引的使用覆盖索引、使用索引排序

5)、索引列字段应不为NULL(会导致索引失效,若是唯一索引,多列可以有NULL值,使唯一索引失效)

6)、索引保持在5条左右,多的话影响插入和更新性能

3、查询(避免索引失效)

1)、使用EXPLAIN查询SQL优化器执行计划,调整SQL查询

2)、使用not exists代替not in,not in不会使用索引(not in不是绝对不走索引,若not in的条件记录很少时,会走索引)

3)、查询条件避免使用前导模糊查询,如'%xxx',因为无法使用索引

4)、查询条件使用or的话,要保证or两边的列都要有索引,否则索引失效(对没有索引的列会全表扫描)

5)、索引列字符串类型,WHERE条件为数字型时,索引失效(因为这样MySQL会讲表中字符串类型转换为数字之后再比较,导致索引失效)

6)、多列索引要满足最左前缀要求

7)、ISNULL判断不走索引,要慎用(测试证明is null会走索引)

8)、LIMIT分页的页码不能太大,会查询出所有的结果然后丢弃掉不需要的。使用主键做连接查询

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值