一、优化方向
可以看出来,数据结构、SQL、索引是成本最低,且效果最好的优化手段。
数据库优化从以下几个方面优化:
-
数据库设计—三大范式、字段、表结构
-
数据库索引
-
存储过程 (模块化编程,可以提高速度)
-
分表分库 (水平分割,垂直分割)
-
主从复制、读写分离
-
SQL 调优
-
对 MySQL 配置优化 (配置最大并发数 my.ini, 调整缓存大小)
-
定时清除不需要的数据,定时进行碎片整理
二、具体优化方案
(一)数据库设计—三大范式、字段、表结构
1.根据数据库三范式来进行表结构的设计。设计表结构时,就需要考虑如何设计才能更有效的查询。
- 第一范式:数据表中每个字段都必须是不可拆分的最小单元,也就是确保每一列的原子性;
- 第二范式:满足一范式后,表中每一列必须有唯一性,都必须依赖于主键;
- 第三范式:满足二范式后,表中的每一列只与主键直接相关而不是间接相关 (外键也是直接相关),字段没有冗余。
2.其他:
- 尽量使用 TINYINT、SMALLINT、MEDIUM_INT 作为整数类型而非 INT,如果非负则加上 UNSIGNED
- VARCHAR 的长度只分配真正需要的空间
- 尽量使用整数代替字符串类型
- 单表不要有太多字段,建议在 20 以内
- 避免使用 NULL 字段,很难查询优化且占用额外索引空间
- 不建议使用 select * from t ,用具体的字段列表代替 “*”,不要返回用不到的任何字段。尽量避免向客户 端返回大数据量,若数据量过大,应该考虑相应需求是否合理
- 表与表之间通过一个冗余字段来关联,要比直接使用 JOIN 有更好的性能
- select count (*) from table;这样不带任何条件的 count 会引起全表扫描
(二)索引
索引也算数据库设计的一部分
1.一般来说