删除超过半小时或1800秒的MySql记录?

时间:2011-04-09 16:59:55

标签: mysql

当前的MYSQL

DELETE FROM `sessions` WHERE `expires` < UNIX_TIMESTAMP();

我不确定如何让它做我想做的事。我正在考虑使用php并执行unixtime-1800然后在MySQL中使用它,这对我的应用程序来说没问题。不确定你是否可以在MySQL中完成这一切,因为我只是想知道。

PHP我曾经是这样的事情

<?Php
$time = time() - 1800;
mysql_query("DELETE FROM `sessions` WHERE `expires` < $time;")
?>

3 个答案:

答案 0 :(得分:1)

只需减去你想要的秒数

DELETE FROM `sessions` WHERE `expires` < (UNIX_TIMESTAMP() - 1800);

您计划多久运行一次此查询?

答案 1 :(得分:1)

您可以这样做:

DELETE FROM `sessions` WHERE `expires` < (UNIX_TIMESTAMP() - 1800);

答案 2 :(得分:0)

这种方法会在高负载系统上造成巨大的性能下降。第一个提议是每半小时创建一个新表,并按一些逻辑刷新旧表。

编辑:好的,也许不是半小时GC的大幅降级,但一般来说这是一个糟糕的设计。