3
后需要很长的,我有以下表格: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
仍然需要一段时间,即使表现在是空的。这里发生了什么?
哪个存储引擎? – Prinzhorn
所有的表都使用InnoDB。 – leonsas
我不是100%的MySQL,因此为什么这是一个评论而不是答案,但是:尝试使用'TRUNCATE SData'而不是'DELETE FROM SData' - 'DELETE FROM'将会清空表格,但可能不会完全清理它起来。 'TRUNCATE'实际上在内部丢弃和重建表(如果你有一个自动增量标识字段,它也会重置为1)。也可以尝试'OPTIMIZE TABLE SData' – Kai