我有一个几乎完全归一化(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/