源头:网易学院
一些 Mysql 的优化经验
1. 从数据库机关做起1. 字段典范模范的界说时遵循以下正直:1. 选用字段长度最小2. 优先运用定长型3. 尽能够的界说 "NOT NULL" 4. 数值型字段中避免运用 "ZEROFILL" 5. 如果要储存的数据为字符串, 且能够值已知且有限, 优先运用 enum 或 set 2. 索引的优化至关严厉(以下如果没有稀奇分析, 均指查问辘集的环境)
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" 前提查问, 将其拆分红多个单一字段的查问语句功用更高。
TINYINT 1 字节 SMALLINT 2 字节
MEDIUMINT 3 字节 INTEGER: 4 字节
BIGINT 8 字节 DOUBLE 8 字节
FLOAT(X) X <=24: 4 字节
X > 24: 8 字节 DECIMAL(M,D) M<D: D 2 字节
M>=D: M 字节
DATE 3 字节 DATETIME 8 字节
TIMESTAMP 4 字节 TIME 4 字节
YEAR 1 字节
CHAR(M) M 字节 VARCHAR(M) 值长度 1 字节
TINYBLOB 值长度 1 字节 TINYTEXT 值长度 1 字节
BLOB 值长度 2 字节 TEXT 值长度 2 字节
MEDIUMBLOB 值长度 3 字节 MEDIUMTEXT 值长度 3 字节
LONGBLOB 值长度 4 字节 LONGTEXT 值长度 4 字节
ENUM 1 或 2 字节
取决于枚举值数 SET 1,2,3,4, 8
取决于成员数目
版权声明: 原创作品,答应转载,转载时请务必以超链接体例标明文章 原始来因 、作者信息和本声明。否则将清查执法责任。