mysql优化查询,优化经验总结

mysql优化查询,优化经验总结

优化经验

  1. 选择适合的数据类型(比如时间就用mysql内建的时间类型,不要用字符串等,ip用整数而不是字符串)
    2.尽量避免使用null,最好设置not null
    3. 不要太多列,不要太多关联
    4.范式化设计表(当然也有优缺点,比如范式化设计的表没有冗余的数据,存储更小。但是范式化也需要更多关联查询,引发另一些问题。反范式增加冗余数据,但能减少关联。)
    5. 增加汇总表和缓存表(有时候甚至将数据存一份到(lucene,sphinx)搜索引擎上)
    6. 使用nosql(如redis)
    7. 分表(水平分表,垂直分表),分库(读写分离,主从分库)
    8.like语句条件必须是没有%开头才会走索引。
    9.独立的列(比如where id+1=5 或者where id+1>4这样的查询将不会走id这个索引,要将单独的列放在比较符的一侧,养成这个习惯。)
    10.只查询需要的列(如果select * 将返回全部列,返回全部列会给服务器带来额外的I/O、内存和cpu消耗,占用宽带)
    11.只查询需要的行(使用limit)
    12.切分查询(将一个大的查询分成多个小的查询,比如删除一大批数据,一次性删除可能锁住很多数据,占满整个事务日志,阻塞其他查询)
    13.分解关联查询,关联查询分解多个单表的查询(这样做的好处有:缓存效率高,有些表可以放缓存层,不用每次都去DB查询;mysql的查询缓存也能利用到,关联查询的话,某个表变动,就无法利用到mysql的查询缓存,多个单表查询的话,没有修改的表就可以利用到查询缓存;在应用层做关联,更容易做到高性能和可扩展)
    14.索引使用最左前缀列(组合索引)
    15.重复多的列不建议加索引(比如性别:只有男和女)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值