建立索引还是很慢

本文探讨了MySQL数据库中建立索引后查询仍然慢的问题,分析了两种情况:偶尔慢(如数据库刷新脏页、拿不到锁)和一直慢(未用到索引、数据库选错索引)。重点讨论了索引未生效的原因,如字段函数操作、区分度低等,并提到了索引的类型和维护注意事项。
摘要由CSDN通过智能技术生成

建立索引后还是查询很慢

主要思路检查
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值