面试题大全-mysql性能优化方案


表结构优化:

1。根据您自己的业务选择合适的引擎

2。设计表格时,尽量符合第三范式

第一范式:表格的列是原子的,不能再分解,即列的信息不能分解。只有数据库是关系数据库,并且会自动得到满足。

第二种范式:表中的记录是唯一的,满足第二种范式。通常我们设计一个主键来实现

第三范式:表中不应有冗余数据,即表中的信息。如果可以推断出来,就不应该设计单独的字段来存储它。

为什么你说它尽可能一致?因为为了提高某些系统的运行效率,有必要降低标准格式并适当保留冗余数据。

3。表中的字段尽可能使用非空

4。如果您知道字符串的固定长度,请使用char而不是varchar

5。将主机与从机分开,从机读取,从主机

6写入。当表格中有太多字段时,请垂直划分。如果数据太多,水平分割

sql优化:

1。不要使用选择*,只查询必填字段。当查询所有占用的内存

2和多表连接时,尝试用小表驱动大表,即小表连接大表

3。插入多段数据时,尝试组合成一天的sql批处理插入

4,使用存储过程

5,使用枚举或整数而不是字符串类型

6,打开慢速查询,使用解释或desc对慢速sql进行性能分析,并优化sql

index优化:

index并不是越好,根据查询的目标创建,考虑在WHERE和ORDER BY命令中涉及的列上建立索引。您可以根据EXPLAIN检查是使用索引还是全表扫描。

您应该尽量避免判断WHERE子句中字段的空值,否则会导致引擎放弃索引并扫描整个表。

具有稀疏值分布的字段不适合索引,例如,只有两个或三个值的字段,如gender

character字段只构建前缀索引

character字段,最好不使用主键

和外键。该程序保证约束

不会尽可能多地使用UNIQUE。程序保证约束

以与查询标准相同的顺序使用多列索引,同时删除不必要的单列索引(最左边的匹配原则