我有一个删除查询,可以从表中删除大量数据。查询看起来像这样
While loop
DELETE FROM table_name WHERE id=12345;
End loop
此查询获取1000个数据。
循环很大,查询删除的数据也非常庞大。结果,系统变得非常慢。我需要一种方法来优化它。
注意:存储引擎InnoDB
由于
答案 0 :(得分:0)
此答复基于这样的假设:循环不对缓慢的过程负责。
有几种方法可以加快DELETE
- 陈述,有些方法比其他方法更实用。首先,你必须找出什么exaclty减慢DELETE
- 查询,例如许多索引,很多数据行,可能是一个慢速硬件 - 或者只是与服务器的连接不良。
一种方法是使用QUICK
- 选项,它以不同方式处理索引文件中的删除。请在MySQL-manual中查看详细信息。
另一种方式是:
您将删除与工作表分开。如果我们在这里讨论的表格有很多流量,或者使用外键等,那么就不应该这样做。