丢弃时MYSQL表超时

时间:2017-06-03 22:09:56

标签: mysql mysql-workbench innodb

我有一个包含数亿行数据的表。我想删除该表,但是我在表上执行的每个操作在运行50,000+秒(大约16小时)后失去连接,这是在我在数据库中设置的60,000秒时间条件下。我尝试使用Drop Table代码创建一个存储过程,认为如果我将信息发送到DB来执行操作,它将不需要连接来处理它,但它做了同样的事情。它刚刚超时吗?或者我还需要做其他事情吗?

1 个答案:

答案 0 :(得分:0)

取而代之的是TRUNCATE TABLE。在内部,它创建一个等效但空的表,然后交换。这种技术可能需要一秒钟,即使是非常大的桌子。

如果要删除表格的大多数,那么通常会更快(有时候要快得多)

CREATE TABLE new LIKE real;
INSERT INTO new
    SELECT ... FROM real
        WHERE ... -- the rows you want to keep

为什么需要删除所有内容?

对于大规模删除中的其他技术,包括大表中的大块,请参阅https://mariadb.com/kb/en/mariadb/big-deletes/