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