我有一个包含大约 500,000 条记录的 mySQL 表。该表的大小约为 45MB。第一次执行查询,每次需要将近20秒,但后续查询很快。如果我注销并重新登录,查询仍然很快。如果我 4-5 小时后回来。同样的查询又变慢了。
查询非常简单。
$query = "select * from tableName where uniqueID='$passedID' ORDER BY tableName ASC";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
该站点托管在具有 1 GB 内存的 VPS 上。网站每天接待大约 150 名访问者,每人访问 10 个页面左右。 500,000 条记录似乎并不太大,因此性能应该没问题。有谁知道可能导致速度缓慢的原因吗?
最佳答案
初始响应缓慢可能有多种原因,具体取决于您的表结构和 VPS 的性能(或缺乏性能)。确保问题不是 MySQL 确保 ID 列已正确索引,因此它不会进行全表扫描。还要对查询运行解释以确保它正在使用索引。您的问题可能是缺少索引,迫使 MySQL 进行全表扫描而不是索引查找。
重复查询几乎肯定很快,因为查询缓存正在正确地完成它的工作。
VPS 也可能存在某种磁盘访问时间问题。如果您在 PHP 之外看到第一次访问文件夹很慢而第二次访问正常的情况,则怀疑 VPS 中存在问题。
关于php - 具有 500,000 条记录的慢速 MYSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8663630/