1、定义
将超过指定时间的SQL语句查询称为“慢查询
2、记录慢查询的方法:
查看/设置“慢查询”的时间定义
show variables like "long%"
也可以自己定义慢查询的时间
set long_query_time = 10.00000
3、开启“慢查询”记录功能
show VARIABLES like "slow%"

将show_query_log j改为开启状态
set global slow_query_log=ON;
常见Mysql的慢查询优化方式
1、数据库中设置SQL慢查询,如上,开启log,设置慢查询时间
2、分析慢查询日志
直接分析mysql慢查询日志 ,利用explain关键字可以模拟优化器执行SQL查询语句,来分析sql慢查询语句
例如:执行EXPLAIN SELECT * FROM res_user ORDER BYmodifiedtime LIMIT 0,1000
得到如下结果: 显示结果分析:
table | type | possible_keys | key |key_len | ref | rows | Extra EXPLAIN列的解释:
type 这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
rows 显示需要扫描行数
key 使用的索引
3、常见的慢查询优化
1)索引没起作用的情况
- 使用LIKE关键字的查询语句
在使用LIKE关键字进行查询的查询语句中,如果匹配字符串的第一个字符为“%”,索引不会起作用。只有“%”不在第一个位置索引才会起作用。- 使用多列索引的查询语句
MySQL可以为多个字段创建索引。一个索引最多可以包括16个字段。对于多列索引,只有查询条件使用了这些字段中的第一个字段时,索引才会被使用。
- 使用多列索引的查询语句
2)优化数据库结构,高效且合理
合理的数据库结构不仅可以使数据库占用更小的磁盘空间,而且能够使查询速度更快。数据库结构的设计,需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面的内容。
- 将字段很多的表分解成多个表
对于字段比较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。 - 增加中间表
对于需要经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。 - 分解关联查询
将一个大的查询分解为多个小查询是很有必要的。 - 分析具体的SQL语句
以小表驱动大表
mysql 如何给SQL添加索引
1.添加PRIMARY KEY(主键索引)
alter table table_name
add primary key(column
);
2.添加UNIQUE(唯一索引)
alter table table_name
add unique(column
);
3.添加普通索引
alter table table_name
add index index_name(column
);
4.添加全文索引
alter table table_name
add fulltext(column
);
5.添加多列索引
alter table table_name
add index index_name(column1
,column2
,column3
);
网友评论