【发布时间】:2014-08-04 04:18:11
【问题描述】:
我需要通过 PHP(使用 PDO)从 MySQL 表中进行批量删除。该表有一个名为“id”的字段,所有要删除的 id 都存储在一个数组中。可能有 5 行要从表中删除,也可能有 5000+。
我的直接想法是使用 foreach 并遍历数组,一次删除一个。但是有些事情告诉我,如果数组中有很多元素,这可能不是一个很好的方法。
对进行此类删除的最佳方法有什么想法吗?
【问题讨论】:
-
使用
IN:DELETE FROM table WHERE id IN (1,2,3,4,5) -
@mcryan 是对的。但是,老实说,为 SQL 删除命令迭代 5,000 多个包含 SQL 记录 ID 的数组元素并不会真正损害性能,除非您计划将该过程集成到高流量域上的公共用户界面中。基本上,您可能需要 10 秒。这不是一件坏事。当用户等待 10 秒时,这很糟糕。您还可以遍历数组并构建查询字符串。在某些情况下,使用带 OR 的 where 子句比使用 IN 的性能更好。如果性能很重要,请进行测试。