我有一个删除查询,从表中删除大量的数据。查询看起来是这样的提高删除查询的速度,删除大量数据?
While loop
DELETE FROM table_name WHERE id=12345;
End loop
该查询获取数据1000个。
该循环是巨大的以及被查询删除的数据也是非常巨大的。结果系统变得非常慢。我需要一种方法来优化它。
注:存储引擎InnoDB的
感谢
我有一个删除查询,从表中删除大量的数据。查询看起来是这样的提高删除查询的速度,删除大量数据?
While loop
DELETE FROM table_name WHERE id=12345;
End loop
该查询获取数据1000个。
该循环是巨大的以及被查询删除的数据也是非常巨大的。结果系统变得非常慢。我需要一种方法来优化它。
注:存储引擎InnoDB的
感谢
该回复基于这样的假设,即循环是不负责的缓慢的过程。
有几种方法可以提高DELETE
-状态,有些方法比其他方法更实用。首先,你必须找出什么能够减慢查询的速度,例如许多索引,很多数据行,可能是一个缓慢的硬件 - 或者只是连接到服务器的连接不良。
一种方法是使用QUICK
-选项,它在索引文件中以不同的方式处理删除操作。请查看MySQL-manual中的详细信息。
另一种方法是:
您将删除与工作表分开。如果我们在这里讨论的表在很多流量下,或者使用外键等,这个ofc不应该完成。
整个循环是否在事务中运行?可重复读取隔离级别的长事务可能会损害性能,因为MySQL必须不断读取回滚日志以获取数据。 – 2012-01-04 21:45:21