我一直在根据时间戳从数据库中删除记录。
我的查询很简单
delete from calldetailrecord where StartTime between 1262321999000 AND 1309492799000;
1262321999000 = 2009 年 12 月 31 日星期四 23:59:59 GMT-0500(东部标准时间)
1296449999000 = 2011 年 1 月 30 日星期日 23:59:59 GMT-0500(东部标准时间)
对于毫秒,我使用了:
http://www.ruddwire.com/handy-code/date-to-millisecond-calculators/进行计算
我想知道如何做一个while循环来逐月删除数据,并在没有更多数据时停止。
我想知道我怎样才能做一个while循环逐月删除,当没有更多数据时它会停止。
如果要从表中删除所有数据,请使用截断命令。
truncate calldetailrecord;
只需一个delete
也可以做到
delete from calldetailrecord;
我认为你会通过这种方式获得更好的性能:
Create table new_table as select * calldetailrecord where StartTime > 1309492799000
drop table calldetailrecord;
alter table new_table rename to calldetailrecord;
这解决了逐行删除的问题,这将非常慢。
看起来您想进行选择性删除。首先准备要删除的时间段,生成单个查询,然后运行它。
DELETE FROM calldetailrecord WHERE StartTime BETWEEN 1353897342 AND 1353897592 OR StartTime BETWEEN 1353897754 AND 1353897764;
您应该尽可能少地使用与 db 的连接。