建立索引后还是查询很慢
主要思路检查
1、索引是否建立正确;
2、使用是否正确;规则请参照最后,仔细检查一下,预祝你能解决问题;
一、针对偶尔很慢的情况
1、数据库在刷新脏页
当我们要往数据库插入一条数据、或者要更新一条数据的时候,我们知道数据库会在内存中把对应字段的数据更新了,但是更新之后,这些更新的字段并不会马上同步持久化到磁盘中去,而是把这些更新的记录写入到 redo log 日记中去,等到空闲的时候,在通过 redo log 里的日记把最新的数据同步到磁盘中去。数据库在在同步数据到磁盘的时候,就有可能导致我们的SQL语句执行的很慢了。
2、拿不到锁
这个就比较容易想到了,我们要执行的这条语句,刚好这条语句涉及到的表,别人在用,并且加锁了,我们拿不到锁,只能慢慢等待别人释放锁了。或者,表没有加锁,但要使用到的某个一行被加锁了,这个时候,我也没办法啊。
二、一直都这么慢的情况
我们先来假设我们有一个表,表里有下面两个字段,分别是主键 id,和两个普通字段 c 和 d。并建立相关索引。
mysql> CREATE TABLE t
(
id
int(11) NOT ,
c
int(11) DEFAULT ,
d
int(11) DEFAULT ,
PRIMARY KEY (id
)