2014-11-04 69 views
0

場景: Android應用程序擁有超過10個表的數據庫。 必須將數據從服務器提取並存儲到sq-lite(移動)數據庫。 爲了有效地執行此操作,我計劃計算每個表的行大小。 分配給屬性的長度。使用mysql估計表大小

---------------------------------------------------------------------------------- 
| table_name    | Size of single row with defined attributes length  | 
|----------------------------------------------------------------------------------| 
| table_1    |     size         | 
|----------------------------------------------------------------------------------| 
| table_2    |     size         | 
|----------------------------------------------------------------------------------| 
| table_3    |     size         | 
---------------------------------------------------------------------------------- 

是任何MySQL查詢來計算分配給屬性關於長表的單個行的長度,同時創造?

像我發現它顯示了一個表的大小查詢:

SELECT table_name AS "Table", 
round(((data_length + index_length)/1024/1024), 2) "Size in MB" 
FROM information_schema.TABLES 
WHERE table_schema = "$DB_NAME" 
AND table_name = "$TABLE_NAME"; 

或此查詢列出每個表的大小在數據庫中,最大的第一:

SELECT table_name AS "Tables", 
round(((data_length + index_length)/1024/1024), 2) "Size in MB" 
FROM information_schema.TABLES 
WHERE table_schema = "$DB_NAME" 

ORDER BY (data_length + index_length) DESC; 

回答

0

我做不相信你真的需要知道每一行的大小。您可以通過將表格的大小除以記錄總數來計算它們的平均值。

select count(*) into @tableRecordCount from table_name; 

select table_name as "Tables". 
round(((data_length + index_length)/(1024 * 1024 * @tableRecordCount), 2) "Size in MB per record" 
from information_schema.TABLES 
where table_schame = "$DB_NAME" 
order by (data_length + index_length) desc;