面试中经常会被到数据库优化的知识,数据库优化可以从两个角度进行:
SQL查询优化
1.避免全表扫描
2.禁止使用select *,生产环境下;
3.SQL语句尽量大写(因为写完的sql语句在被执行前,会有一个转换为大写的步骤,我们可以提前大写,减少时间);
4.尽量避免在 where 子句中使用!=或<>操作符(这样不会使用索引查询);
5.遵循最左原则,在where子句中写查询条件时把索引字段放在前面;
6.能使用关联查询解决的尽量不要使用子查询
7.能不使用关联查询的尽量不要使用关联查询;
8.不需要获取全表数据的时候,不要查询全表数据,使用LIMIT来限制数据
数据库优化
- 在进行表设计时,可适度增加冗余字段(反范式设计),减少JOIN操作;
- 多字段表可以进行垂直分表优化,多数据表可以进行水平分表优化;
- 选择恰当的数据类型,如整型的选择;
- 对于强调快速读取的操作,可以考虑使用MyISAM数据库引擎;
- 对较频繁的作为查询条件的字段创建索引;唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;更新非常频繁的字段不适合创建索引;
- 编写SQL时使用上面的方式对SQL语句进行优化;
- 使用慢查询工具找出效率低下的SQL语句进行优化;
- 构建缓存,减少数据库磁盘操作;
- 可以考虑结合使用内在型数据库,如Redis,进行混合存储。