查询以确定数据库中表的大小?(MySQL的)

use*_*637 40 mysql sql database

网站"如何计算MySQL数据库大小"给出了两个查询:

确定所有数据库的大小

SELECT table_schema "Data Base Name", SUM( data_length + index_length) / 1024 / 1024 
"Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;
Run Code Online (Sandbox Code Playgroud)

确定数据库中所有表的大小

SELECT TABLE_NAME, table_rows, data_length, index_length, 
round(((data_length + index_length) / 1024 / 1024),2) "Size in MB"
FROM information_schema.TABLES WHERE table_schema = "schema_name";
Run Code Online (Sandbox Code Playgroud)

第一个查询正常工作,但第二个查询不生成结果集.它只显示没有任何行的字段的名称.如何修改第二个查询以正确显示数据库中表格大小的大小.

Bil*_*win 29

替换"schema_name"的某个数据库的名称.

使用单引号作为字符串文字,而不是双引号.


elr*_*bis 23

这是一个有用的线程.OP的第二个配方上的这种轻微变化仅返回表(没有视图),并按表大小排序返回的数据集---从最大到最小:

MySQL:

SELECT 
  TABLE_NAME, table_rows, data_length, index_length,  
  round(((data_length + index_length) / 1024 / 1024),2) 'Size in MB' 
FROM information_schema.TABLES 
WHERE table_schema = 'yourSchemaName' and TABLE_TYPE='BASE TABLE' 
ORDER BY data_length DESC;
Run Code Online (Sandbox Code Playgroud)

PostGRES:今天我需要在PostGRES中做同样的事情,并从这个答案中借用一些帮助(以及关闭浏览器选项卡后丢失的另一个),这就是我最终的结果.在这里添加它,以防它对其他人有用.

SELECT 
  t.tbl table_name,
  ct.reltuples row_count,
  pg_total_relation_size(t.tbl) size,
  pg_size_pretty(pg_total_relation_size(t.tbl)) pretty_size
FROM (
  SELECT 
    table_name tbl
    FROM information_schema.tables
    WHERE 
      table_schema = 'public'
        AND table_type = 'BASE TABLE'
) t
join (
  SELECT 
    relname, reltuples
  FROM pg_class C
    LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE 
    nspname NOT IN ('pg_catalog', 'information_schema') 
      AND relkind='r' 
) ct 
on t.tbl = ct.relname
order by size desc ;
Run Code Online (Sandbox Code Playgroud)