我有一个几乎完全归一化(3NF)的数据库,用于票务预订/购买应用程序,在我的国家/地区已被旅行公司广泛使用。它在MySQL中。

最近,它已超过1GB(DUMP SIZE),查询变得足够慢。为了减少查询时间和(大)数据库大小,我正在考虑这样做。

我将所有数据转储到脱机服务器中,以便管理人员可以查看3个月以上的历史记录。然后从联机数据库中删除所有旧数据(通过查询)。相信我,这里的旧数据不是那么重要。

唯一重要的旧数据是注册乘客在公司中旅行了多少次。尽管这可能不是一个好主意,但我只是打算将一个整数值添加到“ passenger”表中,在该表中我将保留旧计数。就如此容易。

但这就是问题所在。当我运行以下查询时,我的phpMyAdmin(或管理员)挂断了。服务器也会以某种方式锁定表。除非我重新启动服务器,否则它不起作用。

这是查询。好漂亮啊

UPDATE `passenger`
SET `CountAddition` = (
                       SELECT COUNT(1) FROM booking
                       WHERE booking.Passenger = passenger.ID
                       )
WHERE 1


我给了它大约30分钟的时间。它永远不会结束。它可能出了什么问题?任何帮助将不胜感激。

另外,如果有比这更好的选择,请提出建议。

最佳答案

没有分组依据,子查询将无法工作,这就是为什么它没有显示任何进度。

关于php - 插入查询锁定整个数据库,但没有响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17649101/

10-11 19:32
查看更多