MySQL 查询
delete from t where not condition;
和
create table s select * from t where condition;
drop table t;
非常相似。 (此处,一个查询中的 condition
与另一个查询中的 condition
相同。)
第二种方法的优点之一是,它允许您在删除 t
之前检查 s
,以确保您的查询没有出现问题。这是一个非常重要的考虑因素,我不想将其最小化,但我想知道上述两个查询相对于另一个查询还有哪些其他优缺点。
最佳答案
对于第二个查询,每当您在任何数据库中创建临时表时,它都会对表空间进行碎片整理并降低数据库性能。我强烈建议不要采用第二种方法。
如果您确实想绝对确定自己在做什么,可以使用类似以下代码的内容:
/*
DELETE
-- */ SELECT *
FROM t
WHERE condition;
当您确定返回的行正是您要删除的行时,您可以轻松注释第一行的注释开头,例如:
-- /*
DELETE
-- */ SELECT *
FROM t
WHERE condition;
在运行任何 DELETE
语句之前,我使用相同的方法。
关于mysql - 使用 delete from 与复制数据和使用 drop 的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15254400/