数据库优化
1 三范式
2 mysql引擎 : MyISAM InnoDB
SQL语句优化
一、尽量 选择数据类型占空间少,在where ,group by ,order by 中出现的频率高的字段建立索引。
二、explain 放在查询语句前面可以获取查询计划,建立合适索引。
例: explain select * from t1 where id<5
三、尽量避免使用 select * ....;用具体字段代替* ,不要返回用不到的任何字段。
四、少使用like %查询,否则会全表扫描。
五、子查询优化为 join 查询
六、尽量不要使用自定义函数。
七、单条查询最后添加 limit 1,停止全表扫描。
八、where 字句中不使用!=,否则放弃索引全表扫描
九、尽量避免NULL值判断,否则放弃索引全表扫描,在number列上设置默认值0,确保number列无 null值
十、尽量避免 or 连接条件,否则放弃索引全表扫描,可以用 union代替
优化前 : select id from t1 where id=10 or id=20;
优化后: select id from t1 where id=10 union all select id from t1 where id =20;
十一、尽量避免使用 in 和 not in,否则全表扫描
优化前: select id from t1 where id in(1,2,3,4);
优化后: select id from t1 where id between 1 and 4;
其他优化方法:
字段数据类型选择 : 优先程度 数字 > 时间日期 >字符串
同一级别 占用空间小的 >占用空间大的
少于50字节: char >varchar
对数据存储精确不要求 float > decimal
如果很少被查询可以用 timestamp(时间戳实际十整型存储)
键的设置
尽量设置占用空间小的字段为主键
外键的设置用于保持数据完整性,但是会降低数据导入和操作效率,特别是高并发情况下,而且会增加维护成本。
虽然高并发不建议设置外键,但是可以在表关联的字段上 设置索引,以提供查询效率
表的拆分: 垂直拆分、水平拆分。
浙公网安备 33010602011771号