mysql - 使用 delete from 与复制数据和使用 drop 的优缺点

标签 mysql select delete-row mysql-5.5 drop-table

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/

相关文章:

mysql - Entity Framework 将 StartsWith 转换为 MySQL 的 Locate,MySQL 的 Locate 不使用索引

mysql - SimpleJDBCCall 处理带有结果集的参数

mysql - 有没有办法使用 mysql 命令行实用程序列出 mysql 中的所有保留字

MySQL 选择作为要在 PHP 中定义的函数中使用的变量

Python:如何获取使用 MySQLdb 删除的行数

ios - UITableView 中的断言失败 - 无法找到有问题的部分

mysql - JDBC 中的 getExportedKeys() 返回 mysql 中的空集

sql - 3级嵌套排序

mysql - SQL 中 SELECT 查询的优先级

java - Android 从数据库中删除一行