gpt4 book ai didi

MySQL 从多个表中删除

转载 作者:行者123 更新时间:2023-11-29 13:15:29 26 4
gpt4 key购买 nike

我需要删除多个表中早于特定日期的大量行。实际上我正在这样做:

DELETE FROM trash1 WHERE deletion_date < DATE_SUB(NOW(), INTERVAL 48 HOUR);
DELETE FROM trash2 WHERE deletion_date < DATE_SUB(NOW(), INTERVAL 48 HOUR);
DELETE FROM trash3 WHERE deletion_date < DATE_SUB(NOW(), INTERVAL 48 HOUR);

有什么方法可以让它更好或更快吗?是否可以仅通过一个查询来完成此操作?谢谢。

最佳答案

我首先要检查的是查询的效率 WHERE deletion_date < DATE_SUB(NOW(), INTERVAL 48 HOUR)在这些表上使用 EXPLAIN .

EXPLAIN DELETE FROM trash1 WHERE deletion_date < DATE_SUB(NOW(), INTERVAL 48 HOUR);

等等。您要查看查询是否使用索引列以及它必须搜索多少行。您希望避免搜索表中的每一行。

接下来要检查的是 deletion_date 是否是否已建立索引以及索引的类型。因为这是一个范围查询(即“小于”)而不是简单的相等检查,所以索引的类型可能很重要。有a discussion about optimizing range queries in the MySQL manual .

从这里开始,看看进展如何。如果您遇到问题,请发布您的 EXPLAIN 的输出。

关于MySQL 从多个表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21515752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com