发现问题
慢查询日志
是否启动 :
show variables like ‘slow_query_log‘
启动慢查询:
set global slow_query_log = on;
慢查询日志存放位置
show variables like ‘slow_query_log_file‘;
记录日志的触发时间(sql执行多少秒以上才会记录)
show variables like ‘long_query_time‘;
设置时间(一般实际项目设置为0.001)
set global long_query_time = 0.001
当一条sql执行的时间超过了100毫秒后,就会记录到日志文件中,格式是这样的:
分析问题
使用
Explan
可以模拟优化器执行sql语句,从而进行分析查询语句
使用:
Explain + SQL语句
id:表示select子句执行的顺序
- id相同,执行顺序右上往下
- id不同,id值越大优先级越高,越先被执行。
- id为null时表示一个结果集,不需要使用它查询,常出现在包含union等查询语句中。
select_type:表示的查询的类型,主要用于区分普通查询、子查询、复杂查询
table:这一行的数据属于哪张表
type:访问的类型
类型 | 说明 |
---|---|
索引
什么是索引?
索引是一种特殊的文件,InnoDB引擎数据表上的索引是表空间的组成的一部分,存储的是表中数据的引用指针,索引相当于一个目录,可以通过目录快速的找到要查询的内容;索引的实现通常有B+树
索引有什么优点?
1.索引可以加快数据检索的速度,这也是创建索引的主要原因
2.可以在查询的过程中,通过优化隐藏器,提高系统性能
索引有什么缺点?
1.降低增/删/该的效率,因为对数据的增/删/改,索引也需要动态的维护,而创建索引和维护索引会浪费时间
2.因为索引是一个文件,它会占用物理空间
索引的特点