慢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关键字查看执行计划。

相关文章
|
3月前
|
SQL 数据库
SQL面试50题------(初始化工作、建立表格)
这篇文章提供了SQL面试中可能会遇到的50道题目的建表和初始化数据的SQL脚本,包括学生、教师、课程和成绩表的创建及数据插入示例。
SQL面试50题------(初始化工作、建立表格)
|
6月前
|
SQL 关系型数据库 MySQL
MYSQL-SQL语句性能优化策略以及面试题
MYSQL-SQL语句性能优化策略以及面试题
140 1
|
3月前
|
SQL
sql面试50题------(1-10)
这篇文章提供了SQL面试中的前10个问题及其解决方案,包括查询特定条件下的学生信息、教师信息和课程成绩等。
sql面试50题------(1-10)
|
10天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
3月前
|
SQL
sql面试50题------(11-20)
这篇文章提供了SQL面试中的50道题目,其中详细解释了11至20题,包括查询与学号为“01”的学生所学课程相同的学生信息、不及格课程的学生信息、各科成绩统计以及学生的总成绩排名等问题的SQL查询语句。
|
3月前
|
SQL
sql面试50题------(21-30)
这篇文章是SQL面试题的21至30题,涵盖了查询不同老师所教课程的平均分、按分数段统计各科成绩人数、查询学生平均成绩及其名次等问题的SQL查询语句。
sql面试50题------(21-30)
|
4月前
|
存储 SQL 索引
面试题MySQL问题之使用SQL语句创建一个索引如何解决
面试题MySQL问题之使用SQL语句创建一个索引如何解决
50 1
|
5月前
|
SQL 大数据
常见大数据面试SQL-每年总成绩都有所提升的学生
一张学生成绩表(student_scores),有year-学年,subject-课程,student-学生,score-分数这四个字段,请完成如下问题: 问题1:每年每门学科排名第一的学生 问题2:每年总成绩都有所提升的学生
|
5月前
|
SQL 关系型数据库 MySQL
sql面试题库
sql面试题库
|
4月前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
66 0