数据库
首页 > 数据库> > mysql – 即使删除所有行,COUNT(*)也需要很长时间

mysql – 即使删除所有行,COUNT(*)也需要很长时间

作者:互联网

我有下表:

CREATE TABLE Sdata(uid INTEGER, timestamp DATETIME, value REAL, FOREIGN KEY (uid) REFERENCES Series_uid(uid));

有一次,这个表有~90M行.
我查询SELECT COUNT(*)FROM Sdata;花了大约7分钟.

然后我继续DELETE FROM Sdata;.这个查询花了一个多小时,考虑到大尺寸,这是可以理解的.
从Sdata删除所有行后,我再次运行COUNT.这次还需要大约7分钟.

我很困惑为什么COUNT仍然需要一段时间,即使表现在是空的.这里发生了什么?

解决方法:

在DELETE FROM Sdata之后尝试使用OPTIMIZE TABLE Sdata来真正丢弃未使用的行,或者将来使用TRUNCATE Sdata将自动为您执行此操作.

引自here

In MyISAM tables, deleted rows are maintained in a linked list and subsequent INSERT operations reuse old row positions. To reclaim unused space and reduce file sizes, use the OPTIMIZE TABLE statement or the myisamchk utility to reorganize tables.

标签:delete-row,mysql,sql-delete,count
来源: https://codeday.me/bug/20190831/1778594.html