Mysql之性能优化

数据库表的设计一般要遵循数据库设计的三范式,即第一范式,第二范式,第三范式。

第一范式(1NF):数据库表中的任一字段都是单一的,不可再分的。换句话来说,就是数据库表必须是一张二维表。

第二范式(2NF):数据库表中的任一非关键字对任意候选关键字不存在部分函数依赖。部分函数依赖是指:候选关键字中的某一字段能决定非关键字。

第三范式(3NF):数据库表中的任一非关键字对任意候选关键字不存在函数传递依赖关系。函数传递依赖是指:根据候选关键字能推出非关键字。

注意:必要时,可反范式化设计。

数据库性能优化:

1。选择合适的数据库存储引擎(InnoDB、MyISAM)。InnoDB:支持事务,行级锁以及外键,数据库写的性能相对更优。MyISAM读的性能更优,且MyISAM的数据和索引时分开的,同时索引是有压缩的,这减少了内存的消耗。

2.减少磁盘操作或者提升磁盘读写性。

3.添加必要的索引。

4.尽量使用NOT NULL

5.为每一张表设置一个ID

6. 从 PROCEDURE ANALYSE() 取得建议

7.可以的话,建立字段长度固定的表,这样表操作性能更优

8.必要时,对表进行垂直分割和水平分割

9.使用一个对象关系映射器(Object Relational Mapper)

10.小心使用长连接

11.sql语句方面的优化:

①EXPLAIN 查询SELECT语句

②当只需要获取一条数据时,使用LIMIT 1

③为搜索字段建立索引

④JOIN两张表时,为相同的列建立索引

⑤避免使用SELECT *

⑥使用ENUM而不是VARCHAR

⑦JOIN时,减少表的循环次数,用小结果集驱动大结果集



你可能感兴趣的:(性能优化)