我有一个包含 300 多个 View 的数据库,其中大部分 View 都是空的。 我需要知道哪些 View 有行。 是否有查询来检查哪些 View 有行?
最佳答案
你可以使用:
SELECT owner, view_name, cnt
FROM all_views, XMLTABLE('/ROWSET/ROW' passing (
dbms_xmlgen.getxmltype(REPLACE(REPLACE(
'select COUNT(*) AS cnt from "<owner>"."<table_name>"', '<owner>', owner)
, '<table_name>', view_name))) COLUMNS cnt INT)
WHERE cnt > 0;
编辑:
如果我们只想检查 View 是否有行,我们可以将 COUNT
与 EXISTS
交换。这也应该提高性能。
SELECT owner, view_name, has_rows
FROM all_views, XMLTABLE('/ROWSET/ROW' passing (
dbms_xmlgen.getxmltype(REPLACE(REPLACE(
'select CASE WHEN EXISTS(SELECT 1 from "<owner>"."<table_name>")
THEN 1 ELSE 0 END AS has_rows FROM dual', '<owner>', owner)
, '<table_name>', view_name))) COLUMNS has_rows INT)
WHERE has_rows > 0;
关于sql - 检查哪些 View 有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51879509/