mysql产品优化方案_mysql的优化方案

简介

在本文中,主要写一下自己所查阅和理解的mysql优化方案.

我的理解是数据库的优化对于我们'非专业'人员,mysql的优化也没那么复杂了,真的要玩转mysql的话,肯定得需要很多年的经验了.

参考链接:

优化方案

1.搜索引擎的优化

mysql搜索引擎用的比较多的有以下三中

InnoDB

MEMORY

MyISAM

InnoDB的适用情况:InnoDB有处理事务的功能,对于需要处理大量事务的数据库,InnoDB是比较合适的.

MEMORY的适用情况:一个字快!MEMORY是要把数据直接干到内存中,处理速度很快,但是,当服务器重启或者宕机数据就没了呢.所以,这个是适用临时数据.

MyISAM的适用情况:速度快,不支持事务.适用于处理数据量大且不用大量处理事务的数据库.

2.mysql添加索引

什么情况下适合添加索引

该字段数据量庞大;

该字段很少的DML操作(由于索引也需要维护,DML操作多的话,也影响检索效率);

该字段经常出现在where条件中;

只要列中含有NULL值,就最好不要在此例设置索引,复合索引如果有NULL值,此列在使用时也不会使用索引

尽量使用短索引,如果可以,应该制定一个前缀长度

对于经常在where子句使用的列,最好设置索引,这样会加快查找速度

对于有多个列where或者order by子句的,应该建立复合索引

对于like语句,以%或者‘-’开头的不会使用索引,以%结尾会使用索引

尽量不要在列上进行运算(函数操作和表达式操作)

尽量不要使用not in和<>操作

注意:实际开发中会根据项目需求等综合因素来做调整,添加索引并不能保证一定能够提升检索效率,索引添加不当也有可能会导致效率降低。

3.sql语句的优化

sql语句的优化,主要一点就是,尽量避免全文搜索,就是我要找个东西,我不能在那么多的数据中找到我想要的数据.最好就是,我可以在数据库中搜索最小的范围得到我想要的数据.

查询时,能不要*就不用*,尽量写全字段名

大部分情况连接效率远大于子查询

多使用explain和profile分析查询语句

查看慢查询日志,找出执行时间长的sql语句优化

多表连接时,尽量小表驱动大表,即小表 join 大表

在千万级分页时使用limit

对于经常使用的查询,可以开启缓存

其实还有很多的,主要把握"查最少的信息,获得我所需要的内容"这个核心就行了.

4.表的优化

其实就一点:分块!将数据分块存放.

表的字段尽可能用NOT NULL

字段长度固定的表查询会更快

把数据库的大表按时间或一些标志分成小表

将表分区

比如一个城市里有很多的区,每个区里又有很多的街道小区,一个城市就显得很规矩.如果所有的商店写字楼居民楼都随意布置,那这个城市就乱的一团糟了.

总结

优化数据库有很多途径.让处理数据的效率越高越好,就酱.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值