zoukankan      html  css  js  c++  java
  • MySQL优化

    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

  • 相关阅读:
    Android获取两条线之间的夹角度数
    Android字体度量(FontMetrics)
    Android下如何计算要显示的字符串所占的宽度和高度
    Android 颜色渲染PorterDuff及Xfermode详解
    从输入URL到页面加载的全过程
    滚动优化
    常用的前端相关chrome插件
    DNS预解析prefetch
    资源预加载preload和资源预读取prefetch简明学习
    使用chrome开发者工具中的performance面板解决性能瓶颈
  • 原文地址:https://www.cnblogs.com/tonghun/p/7192371.html
Copyright © 2011-2022 走看看