我在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,这可能解决问题,但我不想依赖它。
谢谢,
发布于 2020-09-17 19:53:02
确保您有一个索引(用户、activitytype、activitynum)。我不知道您所说的加密数据是可索引的是什么意思,在大多数普通加密类型中通常不是这样。
除此之外,听起来你有一个很大的噪音邻居问题。
发布于 2020-09-17 21:51:25
看这里。How do you get server CPU usage and RAM usage with php?。
也应该致力于共享。我在即时Cms中见过这样的指标。
此外,你可以在这里找到一些有用的提示。https://severalnines.com/database-blog/how-identify-mysql-performance-issues-slow-queries
https://stackoverflow.com/questions/63945153
复制相似问题