mysql简单性能优化
查看性能参数
通过下面的sql可以看到数据库的一些性能参数:
show status like 'param'
param可以取得值有:
Connections连接mysql服务器的次数
Uptime服务器上线时间
Slow_queries慢查询的次数
Com_select查询操作的次数
Com_insert插入操作的次数
Com_update更新操作的次数
Com_delete删除操作的次数
索引对查询的影响
1.使用like模糊查询
如果where条件中用like模糊查询,like ‘%abc’索引是不会起作用的,只有%不在第一个位置上索引才会起作用。
2.使用联合索引查询
要注意最左前缀规则,就是如果字段a、字段b、字段c为联合索引,只有where条件中包含字段a时才会起作用。
3.使用or关键字查询
or前后的两个条件都是索引的时候,索引才会起作用,查询效率才会提升
优化子查询
查询的时候尽量避免使用子查询,因为子查询会先把结果生成到一张临时表,再进行主查询。可以使用join连接代替子查询。
优化数据库结构
数据库结构涉及到库表涉及
1.库表不要设计太多字段,如果domain对象属性太多,可以拆成多张表
2.对于经常要联合查询的表可以建立中间表来提高效率
比如学生表中存有班级id,如果需要查询用户姓名和班级姓名,需要join操作。这种情况下可以新建一张表存储学生id、学生name、班级name,查询的时候就不需要join了,直接查询该表就行。
3.增加冗余字段
比如订单表中本来包含产品ID,但是把产品name也冗余进来,就可以在展示订单的时候,展示产品name。
分析表检查表优化表
1.分析表
analyze [local | no_write_to_binlog] table table_name
[]里面的参数是相同的作用,表示分析表的时候不写入日志。
2.检查表
check table table_name
3.优化表
optimize [local | no_write_to_binlog] table table_name
主要用于消除删除和更新造成的文件碎片。