MySQL优化

2018-06-17 23:55:56来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

1.表结构

  1. 适当增加冗余字段:严格按照三范式设计的数据库很少存在冗余字段,获取信息时通常需要进行表连接查询,而表连接查询速度较慢,可以将经常需要跨表查询的字段集中到一张表中,以冗余换速度。
  2. 垂直分割:把字段较多的表分割成多张表,以分担主表的压力,提升系统维护性。分割出来的字段往往是代表次要信息,很少读取或者更新。

2.数据类型

  1. 尽量使用简单的数据类型,int比string查询效率高。
  2. 如果一个字段的取值固定有限,不要将这个字段设定为string,可以设定为enum(enum以字符串形式显示,底层以tinyint类型存储),比如用于存储性别、国家信息的字段,因为string字段复杂,不仅占据较大的空间,而且查询效率低。
  3. 固定长度的字段查询更快,因为长度固定字段中的元素占据相同的空间,很容易根据偏移量获取数据。

3.索引

  1. 为那些经常出现在查询条件中、数据稳定的字段添加索引。
  2. 表连接时,连接条件尽可能使用数据类型相同的字段,并且为字段添加索引。如果连接条件中来自两张表的两个字段数据类型不一致,即使添加了索引,索引无效。

4.约束

为字段设定not null非空约束,因为null不仅占据更多的空间,还使对比与索引变得复杂。

5.SQL语句

  1. 避免使用select *:从数据库中读取的数据越多,查询速度越慢,在数据库与Web服务器分布在不同的计算机上时,还会增加网络传输的负载。
  2. 使用连接查询替代子查询:子查询时MySQL需要为子查询结果建立一张临时表,查询完毕销毁表,表的建立与销毁的过程耗费较多资源。
  3. 尽量使用批处理,较少地访问数据库,一次执行较多的操作。

6.缓存

现在我们大多数时候都是通过ORM框架访问数据,这些框架往往提供缓存功能(一级缓存或者二级缓存),开启缓存可以减少访问数据库的次数,不仅提高了反映速度,而且降低了数据库的压力。

 

参考:
http://blog.csdn.net/waferleo/article/details/7179009
http://www.cnblogs.com/nathan-1988/archive/2012/07/17/2596439.html

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Mysql 5.7.18 利用 MySQL proxies_priv(模拟角色)实现类似用户

下一篇:MySQL详细安装过程