首页 > 解决方案 > Mysql 表太大,只有几行

问题描述

我有一个 13 行的 Mysql 表,大小为 128Mb(类似的 50k 行表只有 50Mb),我无法理解其原因。这里的表格详细信息:

用户表详细信息

要检查表大小,我使用以下语句:

SELECT table_schema "db_name", ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"  FROM information_schema.tables  GROUP BY table_schema;

如果可能的话,我会避免从头开始截断或重建表。

我该如何调查这个问题?

标签: mysql

解决方案


您正在混合由多个表组成的单独的表和数据库。

尝试以下查询以查看单个表的大小:

SELECT CONCAT(TABLE_SCHEMA, ".", TABLE_NAME) `table`,
ROUND((data_length + index_length) / 1024 / 1024, 1) "Table Size in MB"
FROM information_schema.tables

如果单个表仍然占用过多的存储空间,请尝试以下查询,这将释放聚集索引中未使用的空间(至少对于 InnoDB 表而言)。

OPTIMIZE TABLE <tablename>

推荐阅读