mysql的区间查询速度

8hhllhi2  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(369)

我有个问题

$sql="delete from table where date_add(created_at, INTERVAL 2 DAY) < now()"

查询将在10秒以上执行。为什么查询这么慢?如何提高执行速度?谢谢!

busg9geu

busg9geu1#

你应该在你的网站上创建一个索引 created_at 菲尔德,你还没做完。
我还建议您使用单独的sql读取当前日期,然后直接比较返回的日期:

$sql = "SELECT date_add(NOW(), INTERVAL 2 DAY) ";
$res = mysqli_query($con, $sql);
$row = mysqli_fetch_array($res);
$now_minus2days = $row[0];

因此,要删除的新sql变成:

$sql = "delete from table where created_at < '$now_minus2days'";

这应该确保mysql使用索引来删除。

fwzugrvs

fwzugrvs2#

此查询不会使用上的索引 created_at 当你改变值的时候。这也意味着mysql必须在 created_at 每行。您可以更改查询的日期,以确保使用索引,并且日期修改只发生一次。

delete from table where created_at < date_sub(now(), INTERVAL 2 DAY)

相关问题