您当前的位置: 首页 > 数据库教程 > MySQL教程 > Mysql的优化经验

Mysql的优化经验

作者:不详 来源:网络 发布时间: 2014-07-27 21:01 点击:
1. 从数据库结构做起1. 字段类型的定义时遵循以下规则:1. 选用字段长度最小2. 优先使用定长型3. 尽可能的定义 NOT NULL 4. 数值型字段中避免使用 ZEROFILL 5. 如果要储存的数据为字符串, 且可能值已知且有限, 优先使用 enum 或 set 2. 索引的优化至关重要(以下如果

Mysql的优化经验

  1. 从数据库结构做起1. 字段类型的定义时遵循以下规则:1. 选用字段长度最小2. 优先使用定长型3. 尽可能的定义 "NOT NULL" 4. 数值型字段中避免使用 "ZEROFILL" 5. 如果要储存的数据为字符串, 且可能值已知且有限, 优先使用 enum 或 set 2. 索引的优化至关重要(以下如果没有特殊说明, 均指查询密集的情况)(http://www.002pc.com)

  1. 被索引的字段的长度越小, 该索引的效率越高2. 被索引的字段中, 值的重复越少, 该索引的效率越高3. 查询语句中, 如果使用了 "group" 子句, 根据其中字段出现的先后顺序建立多字段索引4. 查询语句中, 如果使用了 "distinct", 根据其中字段出现的先后顺序建立多字段索引5. "where" 子句中, 出现对同一表中多个不同字段的 "and" 条件时, 按照字段出现的先后顺序建立多字段索引6. "where" 子句中, 出现对同一表中多个不同字段的 "or" 条件时, 对重复值最少的字段建立单字段索引7. 进行 "内/外连接" 查询时, 对 "连接字段" 建立索引8. 对 "主键" 的 "unique" 索引 毫无意义, 不要使用9. 被索引字段尽可能的使用 "NOT NULL" 属性10. 对写入密集型表, 尽量减少索引, 尤其是 "多字段索引" 和 "unique" 索引2. 查询语句的优化1. 多多利用 "explain" 查询索引使用情况, 以便找出最佳的查询语句写法和索引设置方案2. 慎用 "select *", 查询时只选出必须字段3. 查询使用索引时, 所遍历的索引条数越少, 索引字段长度越小, 查询效率越高 (可使用 "explain" 查询索引使用情况)

  4. 避免使用 mysql 函数对查询结果进行处理, 将这些处理交给客户端程序负责5. 使用 "limit" 时候, 尽量使 "limit" 出的部分位于整个结果集的前部, 这样的查询速度更快, 系统资源开销更低6. 在 "where" 子句中使用多个字段的 "and" 条件时, 各个字段出现的先后顺序要与多字段索引中的顺序相符7. 在 "where" 子句 中使用 "like" 时, 只有当通配符不出现在条件的最左端时才会使用索引8. 在 mysql 4.1 以上版本中, 避免使用子查询, 尽量使用 "内/外连接" 实现此功能9. 减少函数的使用, 如果可能的话, 尽量用单纯的表达式来代替10. 避免在 "where" 子句中, 对不同字段进行 "or" 条件查询, 将其拆分成多个单一字段的查询语句效率更高。

  附: Mysql 字段长度说明表

  

  

  

  Mysql 字段长度说明

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  
TINYINT1 字节SMALLINT2 字节
MEDIUMINT3 字节INTEGER:4 字节
BIGINT8 字节DOUBLE8 字节
FLOAT(X)X <=24: 4 字节

  X > 24: 8 字节
DECIMAL(M,D)M<D: D+2 字节

  M>=D: M 字节
DATE3 字节DATETIME8 字节
TIMESTAMP4 字节TIME4 字节
YEAR1 字节
CHAR(M)M 字节VARCHAR(M)值长度 + 1 字节
TINYBLOB值长度 + 1 字节TINYTEXT值长度 + 1 字节
BLOB值长度 + 2 字节TEXT值长度 + 2 字节
MEDIUMBLOB值长度 + 3 字节MEDIUMTEXT值长度 + 3 字节
LONGBLOB值长度 + 4 字节LONGTEXT值长度 + 4 字节
ENUM1 或 2 字节

  取决于枚举值数
SET1,2,3,4, 8

  取决于成员数量
分享到:
本文"Mysql的优化经验"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4