SQL语句执行速度慢的原因

SQL语句执行速度慢

前言: 针对SQL语句执行很慢,我们分两种情况去看。一种是一直执行都很慢,二是仅仅只有几条SQL语句执行慢。

速度偶尔变慢:

1、数据库正在刷新脏页(flush) 要知道,我们对数据库进行增删改之后,内存中修改的数据不会马上同步到磁盘,而是先记录在日志中,等到空闲时间,才会通过日志将内存数据同步到磁盘中。这个同步数据过程就是刷新脏页。

刷新脏页触发条件: 1、MySQL认为系统空闲 2、MySQL正常关闭的时候,也会刷新脏页。 3、日志写满了,不得不中断其他操作,先进行刷新脏页,然后清空对应日志。 4、内存不够用了,必须通过淘汰机制,淘汰一部分内存数据页,若淘汰的是脏页,就必须先进行刷新脏页!

2、需要访问的数据被其他事务上锁 需要访问的表或者说某一行正在被其他事务使用,且上锁

速度一直很慢

1、查询数据复杂,而又没有用上索引。

2、字段有索引,但没用上 具体情况查询有关索引失效的原因,这里附上一张图 3、系统选错索引 我们知道,系统在选择索引时,会根据查询行数去比较走哪个索引更节约资源,但是系统不是真人,也会出现错误判断,导致不走索引,而是直接全表扫描(聚集索引)。

经验分享 程序员 微信小程序 职场和发展