一条SQL语句执行得很慢,要分两种情况:
1.大多数情况是正常,偶尔很慢
- 数据库在处理数据忙时候,更新或新增数据都会暂时记录到redo log日志,等空闲时把数据同步到磁盘。假设数据库一直很忙,更新又频繁,redo log被写满,就不得不暂停其它操作把数据同步到磁盘,就有可能导致我们的SQL语句执行的很慢
- 执行时遇到表锁行锁,别人操作数据库用到表或者行数据加锁了,只能慢慢等待别人释放锁
2.这条SQL语句一直很慢
- 没有用索引,例如该字段没有用上索引
- 由于对字段运算,函数操作没有用上索引
- 数据库采样预测索引基础失误,导致系统没有走索引,而是走了全表扫描