mysql 高性能建议,mysql数据库优化的一些优化建议

一、mysql数据库索引的一些优化建议,数据库使用的InnoDB引擎非MsISAM,并且索引类型是Btree(mysql默认)

1、独立的索引列。索引不能是表达式的一部分,也就是说索引列不能参与任何计算和函数方法(冲当参数)等。

2、不要肆意使用索引。并不是说为where条件之后的所有查询列都加上索引就一定会提升查询性能。

3、当where后面出现两个以上索引列时,应该考虑使用多列索引。

4、注意索引列的顺序(针对多列索引)。将选择性最高的放在前面,比如有两个索引,一个是专业一个班级,那显然筛选专业比筛选班级更快,因为专业数据比班级要少很多。

未完待续……

二、数据库高性能,包含很多方面,表结构,索引等等都不是全部,还需要查询优化

1、避免查询大量的数据,大量的数据非常消耗内存,并且避免使用*,如果列很多,会增加mysql服务层的负担。

2、对索引字段的数据筛选是在数据库引擎层进行,非常高效,对非索引的筛选是在数据库服务层先筛选再去引擎获取数据,所以where条件尽量使用索引而且避免一些复杂的条件,比如函数。

3、切分查询,比如要查询所有的学生,可以使用limit分次查询,从而避免单次查询阻塞网络和磁盘io等,同理也是用其他语句。

4、分解关联查询,将联表、子查询分解成独立的单表查询不仅可以提高缓存命中率,还可以改善查询性能,减少锁竞争,在应用层对数据进行关联性能比在数据库进行关联效率要高很多。

5、排序是一个成本很高的操作,应该尽量是排序的字段是索引字段

6、mysql对子查询支持并不是很好,在mysql中应该尽量使用子查询。当迫不得已的时候,比如where id in ( select * from table limit 1)的时候,可以改写成这样where id exists( select * from table limit 1),因为mysql对exists做了改进

7、当进行关联的时候确保on左右两边的列都有索引。

8、查询时可以使用视图,增删改时使用原表,有些版本也支持直接对视图进行增删改,这样做可以将表和应用解耦,也更加灵活。

未完待续……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值