mysq数据库的优化主要通过下面几种方式
1、数据库设计
2、sql语句优化
3、数据库配置
4、硬件环境与操作系统
数据库设计合理
数据库表设计要满足3NF(3范式)
1NF(第一范式)关系的每一个分量必须是一个不可分的数据项。只要是关系型数据库。则自动满足
2NF(第二范式)要求数据表里的所有数据都要和该数据表的主键有完全依赖关系;如果有数据只和主键的一部份有关的话,它就不符合第二范式。如果一个数据表的主键只有单一一个字段的话,它就一定符合第二范式。
3NF(第三范式)每个非关键字列都独立于其他非关键字列,并依赖于关键字,第三范式指数据库中不能存在传递函数依赖关系。换句话说就是不能有冗余数据,即我们的字段信息可以通过关联的关系查询出来(通常是通过外键来实现)
举个栗子
1NF(第一范式)
不符合第一范式的数据设计
里面的数据还可以进行分割
转换为符合第一范式的数据设计
数据不可再分割
2NF(第二范式)
不符合第二范式的数据设计
有两个主键(pk1)和主键(pk2) 新特性完全依赖于这两个主键。但是所属公司只依赖于数据库类型。违背了数据表里的所有数据都要和该数据表的主键有完全依赖关系。
符合第二范式的数据设计
新特性完全依赖两个主键。符合2NF
大家可能注意到了这里少了一列。大家不要纠结。这个地方只是为了演示。怎么样的一个表符合2NF。
3NF(第三范式)
不符合第三范式的数据
应为所属公司得名称就是个冗余数据。随着数据量的增加。所属公司字段所占用的空间也随之加大。
符合第三范式的设计
当然有时候不符合3NF的设计却能更好的提升访问速度
例如:
相册的访问次数统计
这样在查询访问次数的时候不需要将所有相册相片的查看次数计算出来。只需要对相册查询一个就可以了。这样的设计反而更快。更合理