我的网站有很多传入的搜索,这些搜索存储在数据库中以显示我网站的最新查询。由于高搜索查询,我的数据库变得越来越大。所以我想要的是我只需要保留数据库中最近的查询说10条记录。这使我的数据库变小,查询会更快。
我能够将传入的查询存储到数据库,但不知道如何限制或删除表中的多余/旧数据。
任何帮助??
我正在使用PHP和MySQL
答案 0 :(得分:1)
希望您的表中有一个时间戳列(或者可以自由添加一个)。 AFAIK,您必须在向表中添加数据时显式添加时间戳。然后你可以按照以下方式做点什么:
DELETE FROM tablename WHERE timestamp < '<a date two days in the past, or whatever'>;
您可能希望定期执行此操作,而不是每次添加到表中。
我想你也可以通过每次要添加一行时检查表的大小,并删除最旧的记录(再次使用你添加的时间戳列),将大小限制为最近的十条记录。如果添加新记录会使其太大。
Falkon的答案很好 - 尽管您可能不希望将档案放在表格中,具体取决于您对该取证数据的需求。您还可以设置一个只使用mysqldump来备份数据库(文件名中包含日期)的cron作业,然后删除多余的记录。这样,您可以轻松地备份旧数据,或使用任何工具进行搜索,并且数据库仍然很小。
答案 1 :(得分:0)
你应该编写一个PHP脚本,它将由CRON启动(即每天一次),并将一些数据从主表TableName
移动到具有完全相同结构的存档表TableNameArchive
。
脚本中的SQL应如下所示:
INSERT INTO TableNameArchive
SELECT * FROM TableName WHERE data < '2010-06-01' //of course you should provide here your conditions
接下来你应该从TableName
删除旧记录。