增加了一个索引到我的MySQL数据库,现在查询被locking

我刚刚添加了另一个索引到我的数据库中的表,但现在网站崩溃,查询被locking,而不是解锁,查询不执行(我可以看到他们在进程列表中,他们通常不到一秒执行,但现在他们在600秒左右等等)。

我没有改变我的网站上的任何东西,只是添加了一个索引。 这怎么可能,之前有人有类似的问题可以帮我解决我的问题?

更新:我不太确定发生了什么事,但添加索引后,一个特定的查询非常慢(即使此索引不需要/用于此特定的查询)。 即使删除索引也无助于再次加快查询速度。 之后,我从表格中删除了所有的指示,然后再一个一个地添加指示,之后这个查询又快了。 不知道这是否有助于任何人,但这固定了我。

find有问题的查询说这是类似的东西

select * from tableName where user='bob' order by ts; 

然后在前面添加EXPLAIN

 EXPLAIN select * from tableName where user='bob' order by ts; 

从那里你可以看到索引是否在使用中,需要扫描多less个表格以及返回多less个表格。 我的猜测是这样的。你有一个索引,它使用之前,现在你创造了这个新的索引,这是更糟糕的,它是用这个,而不是某种方式。

您尚未提供数据库模式的详细信息,所添加的索引,正在使用的数据库引擎,正在运行的查询,性能变化是否影响使用新的索引/查询的所有查询/查询(使用已修改的表/一些仅查询。 所以这很难说。

添加索引的唯一原因是:

1)加快速度

2)强制一个独特的约束

(再一次,你没有说你的索引打算做什么)。

由于显然它没有加快速度,那么你应该放弃索引,看看是否恢复正常的服务 – 但是你可能想看看你如何收集和分析你的数据。