首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >500,000条记录的MYSQL查询速度很慢

500,000条记录的MYSQL查询速度很慢
EN

Stack Overflow用户
提问于 2011-12-29 11:14:48
回答 6查看 3.5K关注 0票数 2

我有一个包含大约500,000条记录的mySQL表。该表的大小约为45MB。第一次执行查询时,每次都需要近20秒,但随后的查询速度很快。如果我注销,然后重新登录,查询仍然很快。如果我4-5小时后再来。同样的查询又慢了一次。

查询非常简单。

代码语言:javascript
复制
$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条记录看起来并不太大,所以性能应该没问题。有没有人知道可能是什么原因导致了速度缓慢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-12-29 11:23:51

初始响应缓慢可能有几个原因,这取决于您的表结构和VPS的性能(或缺少性能)。要确保问题不是MySQL造成的,请确保ID列被正确索引,这样它就不会执行全表扫描。还要在查询上运行explain,以确保它使用了索引。您的问题可能是缺少索引,迫使MySQL执行全表扫描,而不是索引查找。

重复查询几乎肯定是快速的,因为查询缓存正在正确地执行它的工作。

VPS也有可能存在某种类型的磁盘访问时间问题。如果您在PHP之外看到第一次访问文件夹缓慢而第二次访问正常的情况,请怀疑VPS中存在问题。

票数 1
EN

Stack Overflow用户

发布于 2011-12-29 15:13:38

此select语句可能存在许多问题。

  1. 如果表上正在运行多个update或inserts操作,并且该表是myisam表,则它将锁定整个表,从而导致select查询速度较慢。
  2. 您还需要为where条件字段建立索引,以便在较短的时间内获取结果。
  3. 对查询进行解释,并在获取结果时检查查询的实际操作。

要获得更好的索引教程,可以访问this站点。

票数 1
EN

Stack Overflow用户

发布于 2011-12-29 11:21:57

您的问题可能可以通过在uniqueID列上添加索引来解决

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8663630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档