- 对还有TEXT和BLOB字段的表,如果经常做删除和修改记录的操作要定时执行OPTIMIZE TABLE功能对表进行碎片整理.
- analyze table 表名:使用表分析可以是的系统得到准确的统计信息,使得SQL能够生成正确的执行计划
- check table 表名:检查表的作用是检查一个或多个表是否有错误
- 通过show status命令了解各种SQL的执行频率
- 定位执行效率低的SQL语句
通过show processlist命令查看当前MySQL在进行的线程,包括线程的状态,是否锁表等,可以实时地查看SQL的执行情况,同时对一些锁表操作进行优化 - 通过explain分析低效SQL的执行计划
type=ALL:全表扫描,遍历全表来找到匹配的行
type=index:索引全扫描,遍历整个索引来查询匹配的行
type=range:索引范围扫描,常见于<,<=,>,>=,between等操作符
type=ref:使用非唯一索引扫描或唯一索引的前缀扫描,返回匹配某个单独值得记录行
type=eq_ref:类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配;简单来说,就是多表连接中使用primary key或者unique index作为关联条件
type=const/system,单标中最多有一个匹配行,查询起来非常迅速,所以这个匹配行中的其他列的值可以被优化器在当前查询中当做敞亮来处理
type=NULL。不用范文表或者索引,直接就能够得到结果 - show profile能够更清楚的了解SQL执行的过程
- 通过trace分析优化器如果选择执行计划
以上就是整个优化过程
网友评论