如何查找所有表的表名和行数?

时间:2013-04-19 18:59:42

标签: mysql postgresql

我想通过查询使用mysql和mysql查找数据库中所有表的表名和行数。有什么疑问可以找到吗?

2 个答案:

答案 0 :(得分:1)

SQL-standard INFORMATION_SCHEMA provides information about the structure of your database - 它有哪些表,等等。但是,它不包含行数。

至少对于PostgreSQL,您至少有两个获取行数的选项:

  • 使用外部程序或PL / PgSQL函数,使用EXECUTE生成动态SQL,为SELECT count(*) FROM tablename中的每个表执行INFORMATION_SCHEMA(不包括系统表) ;或

  • 运行ANALYZE,然后从PostgreSQL统计信息表中获取近似行数。这种方法要快得多,但只能根据统计抽样和估算得到一个近似的表行数。

PostgreSQL here已详细讨论过这个问题。

查询INFORMATION_SCHEMA表列表然后遍历执行count的表的方法应该可以跨所有数据库移植。其他方法可能需要不同程度的数据库特定代码。

答案 1 :(得分:0)

对于postgresql:

SELECT 
nspname AS schema,relname table_name,reltuples::int rows_count

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'  and reltuples>0
ORDER BY relname  ;