Oracle 查询总表数和单表行数的SQL
查询数据库中所有表的数量
SELECT COUNT(*) AS total_tables
FROM all_tables
WHERE owner = '你的用户名'; -- 替换为你的用户名,如果要查询当前用户下的表可以省略WHERE条件
查询单个表的行数
SELECT COUNT(*) AS row_count
FROM 表名; -- 替换为你想要查询的表名
查询当前用户下所有表的行数
SELECT
table_name,
(SELECT COUNT(*) FROM user_tables t WHERE t.table_name = a.table_name) AS row_count
FROM
user_tables a
ORDER BY
table_name;
查询所有表及其行数(可能需要较长时间执行)
SELECT
table_name,
TO_NUMBER(EXTRACTVALUE(XMLTYPE(DBMS_XMLGEN.GETXML('SELECT COUNT(*) c FROM '||table_name)),'/ROWSET/ROW/C')) AS row_count
FROM
user_tables
ORDER BY
table_name;
注意事项
- 对于大型数据库,查询所有表的行数可能会非常耗时
- 需要有足够的权限才能查询系统视图
- 对于分区表,可能需要特殊处理
- 更准确的行数信息可以从
user_tables
的num_rows
列获取,但需要先分析表:
-- 先分析表
ANALYZE TABLE 表名 COMPUTE STATISTICS;
-- 然后查询统计信息
SELECT table_name, num_rows
FROM user_tables
WHERE table_name = '表名';
以上SQL可以根据你的具体需求进行调整。