2012-10-09 37 views

回答

2

你可以從INFORMATION_SCHEMA提取此:

SELECT SUM(TABLE_ROWS) from information_schema.TABLES where TABLE_SCHEMA ='a'; 
0

存儲在INFORMATION_SCHEMA信息數據庫的所有數據庫信息。所以你可以探索這個數據庫。

use information_schema; 
select sum(table_rows) from tables where table_schema = 'db_name'; 
1

的MyISAM有一個準確的行數,因爲它總是鎖定在寫操作完成的表格 - 這意味着它可以保持(每個MyISAM表有一個行計數器)的行數的精確軌道。

InnoDB無法完成MyISAM的操作,因爲它允許行級鎖定,這意味着某些行可能會被刪除,並且不會保留中央精確計數器。 information_schema計數器是表中行數的估計值。

準確計數表中的InnoDB行的唯一方法是在該表上使用COUNT(*),該表需要執行全表掃描。

你可以這樣做:

SELECT SUM(
    SELECT COUNT(*) FROM my_innodb_table 
     UNION 
    SELECT COUNT(*) FROM my_other_innodb_table 
     UNION 
    SELECT COUNT(*) FROM my_yet_another_innodb_table 
); 
相關問題