首页 / MySQL / 正文

[MySQL]MySQL数据库中如何使用SQL语句查看某个数据库或者所有数据库中数据表占用的存储空间大小?

3589 发布于: 2018-04-21 读完约需6分钟

问题描述

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;

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [MySQL]MySQL中如何使用SQL命令行列举出数据库中所有的存储过程和函数?

下一篇: [LINQ].NET/C#应用程序开发中如何使用LINQ查询集合中元素的某个属性值在另外一个集合中存在的子集?

本文永久链接码友网 » [MySQL]MySQL数据库中如何使用SQL语句查看某个数据库或者所有数据库中数据表占用的存储空间大小?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册