MySQL 查询有时很快,有时很慢

Posted

技术标签:

【中文标题】MySQL 查询有时很快,有时很慢【英文标题】:MySQL query sometimes fast, often slow 【发布时间】:2021-01-04 18:24:48 【问题描述】:

我在执行 mysql 查询时遇到问题,有时需要几秒钟,有时需要 30 秒钟。我试图确定是查询问题还是共享服务器上的问题。

一些背景:表大约有 200 万行,每个包含用户数据的字段都被加密(客户要求)。由于字段是加密的,我不能做任何索引。这是一个通常需要 3-6 秒,有时需要 30 秒的查询。

 $sth5 = $dbh->prepare("SELECT activityType, startDate, startTime, duration, quality, type, endTime, activityNum, activityClass FROM ActivityX WHERE user=? AND activityType=? ORDER BY activityNum DESC");

在某些情况下,我尝试限制要在数据库中搜索的行,只有当我可以将行限制为 20,000-40,000 左右时才会有所帮助。 (我经常需要搜索完整的数据库才能找到答案。)

 $sth5 = $dbh->prepare("SELECT activityType, startDate, startTime, duration, quality, type, endTime, activityNum, activityClass FROM (SELECT * FROM ActivityX ORDER BY activityNum DESC LIMIT $rowBack) s WHERE user=? AND activityType=?");

我能做些什么来加快查询速度并使其更加可靠快速?

我将在不久的将来转向 VPS,这可能会解决问题,但我不想依赖它。

谢谢,

乔恩

【问题讨论】:

【参考方案1】:

确保您有一个关于(用户、活动类型、活动编号)的索引。 我不确定您所说的可索引加密数据是什么意思,大多数普通加密类型通常不是这种情况。

除此之外,听起来你有一个很大的嘈杂邻居问题。

【讨论】:

【参考方案2】:

看这里。 How do you get server CPU usage and RAM usage with php?.

也应该致力于共享。我在 Instant Cms 中看到过这样的指标。

您还可以在此处找到一些有用的提示。 https://severalnines.com/database-blog/how-identify-mysql-performance-issues-slow-queries

【讨论】:

以上是关于MySQL 查询有时很快,有时很慢的主要内容,如果未能解决你的问题,请参考以下文章

mysql做查询时,第一次很慢,第二三次就会很快?

SQL直接在查询分析运行很快,程式运行时执行很慢

sql查询在Hibernate中很慢,在mysql上很快

mysql 两个子查询很快 ,再连接查询变的很慢,怎么分析其原因

关于"mysql第一次查询很慢,以后就很快"的解决方案

隐含参数_optimizer_use_feedback