Mysql在简单查询运行中崩溃和减速

Mysql在简单查询运行中崩溃和减速,mysql,sql,Mysql,Sql,我在执行sql查询时遇到了一件奇怪的事情 SELECT * FROM clients WHERE id IN (SELECT DISTINCT clientId FROM quotes WHERE storeEmail LIKE '%something@example.net%') 现在,从storeEmail类似'%的引号中选择不同的clientId的结果something@example.net%“只有很少的项目,比如10-20,但是当我运行上面的查询时,整个p

我在执行sql查询时遇到了一件奇怪的事情

SELECT *
FROM clients
WHERE id IN
    (SELECT DISTINCT clientId
     FROM quotes
     WHERE storeEmail LIKE '%something@example.net%')

现在,
从storeEmail类似'%的引号中选择不同的clientId的结果something@example.net%“
只有很少的项目,比如10-20,但是当我运行上面的查询时,整个phpmyadmin stuck和数据库开始崩溃。有什么问题吗?

尝试使用
存在的
。根据,对于非常大的子查询,它比
中的
更快

SELECT * FROM clients c
WHERE EXISTS (
    SELECT * FROM quotes q
    WHERE c.id = q.clientId
    AND q.storeEmail = 'something@example.net'
)

您还需要在
quotes(clientId,storeEmail)

表中总共有多少个条目?该电子邮件地址看起来很完整。当您可以直接使用
=
时,为什么要像
一样使用
?然后可以更快地索引和搜索。好吧,我也尝试过=了,条目可能是20k,但SELECT DISTINCT clientId也有20k条目的条目,它的速度非常快,比如在maxPlease 2-3秒请不要发布真实的电子邮件地址;他们将被垃圾邮件发送者抓取并被垃圾邮件遗忘。你在
storeEmail
栏中有索引吗?请在此处发布
的结果解释您的\u查询\u
。这可能有效,但您没有说明OP的实际代码不起作用的原因。此外,您正在执行
select*from quotes
@prash for
EXISTS
选择什么并不重要,请参阅