【问题标题】:Slow mysql query - select缓慢的mysql查询 - 选择
【发布时间】:2012-05-07 09:25:03
【问题描述】:

此查询第一次执行大约需要 10 秒,然后每次连续执行一次需要超过一分钟:

SELECT qQuoteDateTime, 
       qLastSalePrice, 
       qNetChangePrice, 
       qNetChangePct,
       qShareVolumeQty 
  FROM quotes 
  WHERE qSymbol='GE'

我使用的表有大约 2300 条记录。我见过有人实现了一个相当快速的查询来显示所有记录,但我无法访问他使用的代码。

如何加快速度?

【问题讨论】:

  • 您的所有列都是什么数据类型?您能否发布 DDL,因为您的常识和 reko_t 都是正确的。如果您的所有列都是 nchar 或 blob 等,那么这可能更有意义。
  • 数据的“大小”是多少?几 KB,几 MB 或更多?我曾经对 MySQL 数据有过类似的问题;我有几百行,但表的大小约为 1.5GB;遍历这么多数据可能需要几秒钟。

标签: php mysql performance select


【解决方案1】:

在查询上运行EXPLAIN,看看为什么它很慢。最可能的原因是qSymbol 列缺少索引。如果缺少一个列,请在该列上创建一个索引,您应该会看到性能的显着提升,因为 MySQL 不必扫描表中的每一行,而只需从索引中查找相应的行。

【讨论】:

  • 对于 2300 行,在没有索引的情况下最多不能达到 10 秒。这只是一个带有一般信息的自动答案,对任何人没有帮助,只是为了获得代表点
  • 这根本不是自动答案。如果您查看我的历史,我什至不会在 SO 上发布太多内容,而当我这样做时,我会尝试真正帮助人们。我还认为 10 秒对于行数来说听起来相当高,但可能是他打错了数字,或者他的机器只是承受了这么大的负载,所以 MySQL 窒息了。或者它正在对硬盘进行文件排序,而他的硬盘驱动器即将崩溃。它可能很慢有多种原因,但我不喜欢猜测。不过,我本可以在回答中提到这些可能的问题,你说得对。
  • @raheelshan:在这种情况下使用HAVING 代替WHERE 毫无意义。
  • @reko_t 发布了对此问题的最佳回应。查询慢? => 运行 EXPLAIN 并添加索引。如果这对 Brian 没有帮助,让我们尝试找出其他解决方案。
【解决方案2】:

您的数据库有问题。或者你在吠叫错误的树。
对于给定的行数,您在此处发布的查询应该非常快。

首先确保它是一个查询,而不是其他任何原因。
您是否尝试从控制台运行此查询? PHPMyAdmin?结果是一样的吗? 您是否偶然在循环内运行它?
行数真的是 2300,而不是 230 万吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-15
    • 2016-11-21
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 2012-01-15
    相关资源
    最近更新 更多