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