我有一个用于机票预订/购买应用程序的几乎完全标准化 (3NF) 的数据库,该数据库在我的国家被一家旅游公司广泛使用。它在MySQL中。
最近它已经超过 1GB(DUMP SIZE)并且查询变得足够慢。为了减少查询时间和数据库大小(大大),我正在考虑做这个作弊。
我会将所有数据转储到离线服务器中,管理层可以在其中查看超过 3 个月的历史记录。然后从在线数据库中删除所有旧数据(通过查询)。相信我,旧数据在这里并不重要。
唯一重要的旧数据是注册乘客与公司一起旅行的次数。尽管这可能不是最好的主意,但我只是计划将一个整数值添加到“乘客”表中,我将在该表中保留旧计数。就如此容易。
但这就是问题所在。当我运行以下查询时,我的 phpMyAdmin(或管理员)挂断了。服务器也是如此,并且表格以某种方式被锁定。除非我重新启动服务器,否则它不起作用。
这是查询。这很美
UPDATE `passenger`
SET `CountAddition` = (
SELECT COUNT(1) FROM booking
WHERE booking.Passenger = passenger.ID
)
WHERE 1
我给了它大约 30 分钟的运行时间。永无止境。它可能出了什么问题?任何帮助将不胜感激。
另外,如果有比这个更好的选择,请提出建议。