#优化
MySQL性能优化包括查询优化、数据库结构优化、 MySQL服务器优化等。MySQL数据库优化原则是减少系统的瓶颈和资源的占用,增加系统的响应速度。
可以使用 SHOW STATUS语句查询MySQL数据库的性能参数:
SHOW STATUS LIKE value
value是常用的性能参数值:
Connections: 连接 MySQL服务器的次数
Uptime: MySQL服务器的上线时间
Slow_queries: 慢查询的次数
Com_select: 查询操作的次数
Com_insert: 插入操作的次数。
Com_update: 更新操作的次数
Com_delete: 删除操作的次数
####1.优化查询
######1.1 分析查询语句
通过对查询语句的分析,可以了解查询语句的执行情况。MySQL中提供了 EXPLAIN语句和 DESCRIBE语句分析查询语句。
具体用法:https://blog.csdn.net/mst1010/article/details/81351233
######1.2 使用索引查询
1).使LiKE关键字的查询语句
在使用LIKE关键字进行查询的语句中,如果匹配字符串的第一个字符为“%”,索引不会起作用。
例如:
发现LIKE后条件的第一字符为“%”时,索引没有生效,当第一字符不为"%"时:
****2).使用多列索引的查询语句
MySQL可以为多个字段创建索引。一个索引可以包括16个字段。对于多列索引,遵循“最左前缀”原则,查询条件只有使用了组合索引中第1个字段时,索引才会被使用。
例如:
**3).**使用OR关键字的查询语句(myisam引擎可以, innodb引擎无效)
查询条件中只有OR关键字,并且OR前后的两个条件中的列都是索引时,查询中才使用索引。
######1.3.子查询优化
执行子查询时, MySQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句从临时表中查询记录。查询完毕后再删除这些临时表。MySQL中,可以使用连接(JOIN)查询来替代子查询。连接查询不需要建立临时表,其速度比子查询要快,如果查询中使用索引的话,性能会更好。
####2.数据库结构优化
######2.1 表拆分优化
数据库字段较多的表,可以将使用频率很低的字段分离出来创建新表。
######2.2 增加中间表
经常需要联合查询的表,可以建立中间表用来提高查询效率。
######2.3 增加冗余字段
数据库表设计时尽量遵循范式理论的规约,尽可能减少冗余字段,让数据库设计看起来精致、优雅。但是,合理地加入冗余字段可以提高查询速度。
问题:冗余字段的值在一个表中被修改了,就要想办法在其他表中进行同步。否则就会使原本一致的数据变得不一致。为了提高查询速度而增加少量的冗余大部分时候是可以接受的。是否通过増加冗余来提高数据库性能,这要根据实际需求综合分析。