在DBeaver中查询最大事实表transactionsale行数及大小的SQL语句
查询事实表transactionsale的行数与表大小的SQL语句
由于不同数据库系统的元数据存储逻辑不同,以下是主流数据库对应的查询语句,你可以根据自己使用的数据库类型选择:
MySQL/MariaDB
- 统计行数:
SELECT COUNT(*) AS row_count FROM transactionsale;
- 查询表总大小(含索引,单位转换为MB):
SELECT table_name AS '表名', ROUND(((data_length + index_length) / 1024 / 1024), 2) AS '表总大小(MB)' FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'transactionsale';
PostgreSQL
- 统计行数:
SELECT COUNT(*) AS row_count FROM transactionsale;
- 查询表大小(区分纯数据大小和含索引的总大小):
SELECT relname AS '表名', pg_size_pretty(pg_total_relation_size('transactionsale')) AS '总大小', pg_size_pretty(pg_relation_size('transactionsale')) AS '纯数据大小' FROM pg_class WHERE relname = 'transactionsale';
SQL Server
- 统计行数:
SELECT COUNT(*) AS row_count FROM transactionsale;
- 查询表总大小与数据大小(单位MB):
SELECT t.name AS '表名', SUM(s.used_page_count) * 8 / 1024 AS '总大小(MB)', SUM(s.in_row_data_page_count) * 8 / 1024 AS '数据大小(MB)' FROM sys.tables t JOIN sys.dm_db_partition_stats s ON t.object_id = s.object_id WHERE t.name = 'transactionsale' GROUP BY t.name;
Oracle
- 统计行数:
SELECT COUNT(*) AS row_count FROM transactionsale;
- 查询表大小(注意Oracle表名默认大写,需匹配实际表名):
SELECT table_name AS '表名', ROUND((num_rows * avg_row_len / 1024 / 1024), 2) AS '估算数据大小(MB)', ROUND((bytes / 1024 / 1024), 2) AS '实际总大小(MB)' FROM user_tables WHERE table_name = 'TRANSACTIONSALE';
额外提示:在DBeaver里,除了执行SQL,你也可以直接在左侧导航栏找到transactionsale表,右键选择「属性」,在弹出的面板里直接查看行数、存储大小等信息,更快捷。
内容的提问来源于stack exchange,提问作者Prabhudas8703
相关产品推荐
相关产品推荐

