对sql优化的经验

sql优化有很多方面啊,选择几个简单好记的。

1.表的设计方面

      从表的设计方面,主要是字段要选择合适的数据类型,比如 整型字段要判断它合适的大小,tinyint,int,bigint 要根据实际情况去选择。还有字符类型选择char,varchar还是text类型更合适。

2.sql语句方面

   尽量不用select * ,因为这样可能会产生回表查询,索引查询尽量选择覆盖索引查询避免回表查询,所以要根据实际情况去设计联合索引。

    当要进行联表查询的时候,尽量使用 inner join而不使用左连接和右连接,内连接因为查询的顺序不固定,内部会自动选择以小表为驱动,减少每次循环时的数据库连接。

     聚合查询的时候 尽量使用unoin all 而不用union ,union会多进行一次匹配过滤,效率较低。

3.主从复制 读写分离

在实际的开发过程中,我们团队为了避免写入数据对数据库查询性能产生影响,我们采用了读写分离的方式,通过复制一个从节点,来同步数据。避免写操作对数据库的影响。

4.sql慢查询

  在实际的开发过程,我们团队用到的是若依框架的监控慢sql的方式,去分析慢sql的原因,可能的原因有索引失效,这时候可以通过修改sql语句避免索引失效;如果分析发现因为没有索引而导致的慢sql,我们可以去添加合适的索引来提高查询效率。

5.分库分表

    我们团队中有对数据库进行分库分表的优化,做的是垂直分库,因为我们项目是采用的是微服务的框架,每个微服务独立一个模块,每个独立的模块也就对应每一个数据库,把原来单一的数据库也拆分成多个模块,有助于提高磁盘的IO效率;
我们还做了一点就是水平分库,将一个数据库拆分为多个,解决海量数据问题,提高并发效率。

分库分表我们采用的中间件是mychat,能够简单便捷进行分库分表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值