慢SQL(面试题)

简介: 慢SQL(面试题)

慢SQL定义

慢SQL的话,一般超过1s就属于慢SQL,超过1秒的SQL,大部分都是连表比较多了,比如left join,right join,inner join这些,因为是多个表,所以树构建的都不一样,所以连表性能比较差。

排查慢SQL

这里有两种情况,一种是没锁定到慢SQL,一种是锁定到了慢SQL。


那如果没锁定到慢SQL的情况下,一般会先开启,慢日志,mysql可以支持配置的,这个慢日志可以,配置一个预值,这个预值一般就是1秒,也就是说,mysql里面会进行监听,如果超过了1秒,他就会把他的那个,日志打印下来,打印下来的是一个一个的SQL,然后就可以通过,explain关键字,来具体来看,这个SQL慢的原因。这个是没锁定到慢SQL的情况。


然后接着说,直接锁定到慢SQL的情况,锁定到SQL以后,用explain关键字看,SQL慢的原因,看他的那个type,看他的index,看他的rows,就是对应扫描多少行,对应命中的索引,来判断是索引失效呢,还是没加索引。


基本上来说,分为两种情况:


一个是Java代码本身,或者说是SQL的编写有问题,不规范,导致索引失效。就比如说:违背了最左原则,还有就是有索引,但是你没用,就比如说查询时候有一个name的字段,他加了一个唯一索引,但是查询时候,没用这个name,查询场景用不到,这种就是不行的,还有就是在那个,索引上进行隐式计算(比如说在索引上搞一个+=,这种会让索引失效),和in、not in(这个有可能不走索引,因为走索引查一页数据是16k,数据量少的话有可能不走索引)一般推荐用exist(一个z斯特)或者not exist来替代,大概就是这些。(in和exist的区别的话,我只记得exist是避免索引失效的)


另外一个就是索引,索引导致的慢查询的话,有可能是没索引,解决的话就加索引,用那个explain关键字查看执行计划。

还有一种情况是,有索引,但是没走索引,解决的花也是用explain关键字查看执行计划。

相关文章
|
2月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
110 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
2月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
642 0
|
2月前
|
SQL 关系型数据库 MySQL
MYSQL-SQL语句性能优化策略以及面试题
MYSQL-SQL语句性能优化策略以及面试题
67 1
|
19天前
|
SQL 大数据
常见大数据面试SQL-每年总成绩都有所提升的学生
一张学生成绩表(student_scores),有year-学年,subject-课程,student-学生,score-分数这四个字段,请完成如下问题: 问题1:每年每门学科排名第一的学生 问题2:每年总成绩都有所提升的学生
|
24天前
|
SQL 关系型数据库 MySQL
sql面试题库
sql面试题库
|
5天前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
14 0
|
5天前
|
SQL 监控 Java
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
10 0
|
1月前
|
SQL Oracle 关系型数据库
SQL 面试系列(一)【留存率问题】
SQL 面试系列(一)【留存率问题】
|
1月前
|
SQL 算法 大数据
深入解析力扣177题:第N高的薪水(SQL子查询与LIMIT详解及模拟面试问答)
深入解析力扣177题:第N高的薪水(SQL子查询与LIMIT详解及模拟面试问答)
|
1月前
|
SQL 存储 数据库
sql数据库面试题
以下是一些SQL数据库的面试题: 1. 什么是SQL?你能简要描述一下它的特点吗? 2. SQL中的主键和外键是什么?它们有什么作用? 3. 你能解释一下什么是索引吗?索引在数据库中的作用是