问题描述
在MySQL
数据库中,我们可以使用如下的SQL
语句来查看某个指定数据库的数据表的大致存储信息,如下:
show table status from myDatabaseName;
但这条SQL
语句不能体现详细的数据表信息,比如占用存储空间最大的数据表是哪个,具体占用的存储空间是多少,这些数据都无法使用以上这条简单的查询得知。
那么,在MySQL
数据库,如何使用SQL语句查看某个数据库或者所有数据库中数据表占用的存储空间大小呢?
方案一
可以使用如下的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';
注: 其中的
table_schema
表示数据库名称,table_name
表示数据表名称。
或者,可以使用以下的MySQL
查询语句查询当前服务器上所有数据库的所有数据表的存储空间占用详情,如下:
SELECT
table_schema as `Database`,
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
ORDER BY (data_length + index_length) DESC;
方案二
SELECT TABLE_NAME AS "Table Name",
table_rows AS "Quant of Rows", ROUND( (
data_length + index_length
) /1024, 2 ) AS "Total Size Kb"
FROM information_schema.TABLES
WHERE information_schema.TABLES.table_schema = 'DATABASENAME'
LIMIT 0 , 30
注: DATABASENAME 表示数据表名称。
或者,可以使用以下的MySQL
查询语句来查询每个数据库的存储空间占用情况,如下:
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;
查询的结果可能如下:
DB Name | DB Size in MB
mydatabase_wrdp 39.1
information_schema 0.0
方案三
SELECT
table_name AS "Table",
round(((data_length + index_length) / 1024 / 1024), 2) as size
FROM information_schema.TABLES
WHERE table_schema = "DATABASE_NAME"
ORDER BY size DESC;
注: 其中的
DATABASE_NAME
表示数据表名称。size
是以MB
为单位的。
方案四
如果要查询当前选中的数据库的数据表的存储空间占用情况,则可以使用如下:
SELECT table_name ,
round(((data_length + index_length) / 1024 / 1024), 2) as SIZE_MB
FROM information_schema.TABLES
WHERE table_schema = DATABASE() ORDER BY SIZE_MB DESC;
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册