【问题标题】:PHP - MySQL - Select runs indefinitelyPHP - MySQL - Select 无限期运行
【发布时间】:2010-04-11 20:24:35
【问题描述】:

我有三张桌子

listings: id, pid, beds, baths, etc, etc, etc, db
locations: id, pid, zip, lat, lon, etc, etc, etc, db
images id, pid, height, width, raw, etc, etc, db

id、pid & db 被索引。 db 只是引用特定项目来自的 mls 提供程序。在图像中,原始列保存原始图像数据

列表/位置大约有 15k 行,图像中有大约 120k 行,因此有多个行具有相同的 pid。

当我执行“从列表中选择 pid”或“从位置中选择 pid”时,查询在大约 100 毫秒内成功完成。

当我执行“从图像中选择 pid”时,它只是挂在 sqlyog 中并且永远不会完成......我在想,因为原始列包含很多信息,它可能也试图选择它,但我的查询没有尝试选择它,所以我无法想象为什么要花这么长时间...

知道为什么会这样吗??

【问题讨论】:

  • 您是否尝试过简单的故障排除,例如“从图像限制 10 中选择 pid;”?如果是,需要多长时间?
  • limit 10, limit 100, limit 1000, limit 10000 工作正常.. 当我限制 100000 时,它的作用与未指定限制时的常规查询相同。 - 这是它永远运行然后当它最终完成时,它说它花了 1.3 秒 - 而实际上它花了几分钟。
  • 听起来很奇怪。也许是损坏的索引或数据表?您可以尝试转储整个表并将其重新插入到不同的数据库中吗?
  • 我实际上是想尝试一下,但把它全部放在不同的服务器上只是为了看看。有没有办法检查索引是否确实坏了?
  • 也许CHECK TABLE 发现了一些问题。 dev.mysql.com/doc/refman/5.1/en/check-table.html

标签: php mysql lag indefinite


【解决方案1】:

可能是索引或数据表损坏?您可以尝试转储整个表并将其重新插入到不同的数据库中吗?

(见扩展的 cmets 和 cmets 中的输入)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 2015-04-22
    • 2019-02-04
    • 2023-01-12
    • 1970-01-01
    相关资源
    最近更新 更多