2013-02-10 64 views
3

好記錄的數量,這應該是足以讓在當前數據庫中的所有記錄數:的MySQL數據庫

SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = DATABASE(); 

出人意料的是,我得到我的每個執行上述語句時不同的數字!首先,我認爲我的數據庫存在問題。但是對於MySQL開發人員提供的示例數據庫也是一樣的。

執行上面的語句在sakila多次導致該值:

46362 
48104 
45170 
47060 
48139 

我做錯了嗎?這是一個錯誤?

回答

6

這是一個InnoDB的東西 - 你可以在桌子上計數(id),但它很慢。

因爲速度很慢,所以InnoDB會隨機抽樣行,測量尺寸,然後劃分總尺寸以確定大概有多少行。

+0

我一直在想這是爲什麼。 Thx的解釋。 – 2013-02-10 15:56:03

+0

你能告訴我一個示例查詢以確切計數嗎? – 2013-02-10 16:02:26