Mysql 大规模sql删除查询

Mysql 大规模sql删除查询,mysql,sql,optimization,sql-delete,Mysql,Sql,Optimization,Sql Delete,我必须根据id值删除大量数据。哪一个最快: DELETE FROM myTable WHERE id = '10' OR id = '20' OR id = '43' OR id = '54' ....... 或 如果你有别的解决办法,请告诉我 (此处的id不是主键或索引,而是外键,因为它引用了一个单词,并且我可以在此数据库中为一个单词创建多个条目) 我使用MySQL,但我希望我的查询可以应用到其他RDBMS上。第一个RDBMS更快,但我希望像这样使用IN操作符,以获得更高的可读性,尽管性能相

我必须根据id值删除大量数据。哪一个最快:

DELETE FROM myTable WHERE id = '10' OR id = '20' OR id = '43' OR id = '54' .......

如果你有别的解决办法,请告诉我

(此处的id不是主键或索引,而是外键,因为它引用了一个单词,并且我可以在此数据库中为一个单词创建多个条目)


我使用MySQL,但我希望我的查询可以应用到其他RDBMS上。第一个RDBMS更快,但我希望像这样使用
IN
操作符,以获得更高的
可读性,尽管性能相同

DELETE FROM myTable WHERE id in ('10','20','30',...)

首先一个人应该更快


就查询优化器的输出而言,拥有一条语句比拥有一组语句要好。

第一条语句更好,因为数据库引擎要做的日志相关工作更少。您使用的是什么RDBMS?谢谢,因为这两种方法花费的时间太多了。很难测量。你觉得萨钦的例子怎么样?我使用MySQL,但我希望我的查询应用于其他RDBMS,就像问题标题:)。这会增加人们对里面巨大的东西的好奇心。巨大的就像中文词典一样。我会尽快试试这个。谢谢。别忘了倒逗号。似乎
id
的数据类型是text/nvarchar。第二种解决方案并不一定意味着存在多个事务。一个事务可以跨越多个语句。但我确实同意,一条语句很可能比多条语句快。从您的声誉判断,您应该知道SQL可以在没有事务的情况下运行语句。我非常肯定,在MS SQL Server上,不仅仅是MySQL!不,您不能,即使在SQL Server上也不行。您可能有一个由引擎自动维护的隐式事务,但是在没有事务的情况下运行SQL语句是不可能的(MySQL例外是根本不支持事务)
DELETE FROM myTable WHERE id in ('10','20','30',...)