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 查询有时很快,有时很慢的主要内容,如果未能解决你的问题,请参考以下文章