"в результатах запроса отсутствуют столбцы, в которых, по-видимому, содержатся значения."
Потенциально каждый необязательный столбец может появиться в этом наборе, поскольку онвероятно, что некоторые строки будут иметь значения, но не все строки.«Некоторые строки» больше нуля означает, что такие столбцы не пройдут тест на num_nulls < 1
.
Так что, возможно, вам следует искать столбцы, которые не используются.В этом запросе будут найдены столбцы, в которых каждая строка равна нулю:
select t.table_name
, tc.column_name
from user_tables t
join user_tab_cols tc on t.table_name = tc.table_name
where t.num_rows > 0
and t.num_rows = tc.num_nulls;
Обратите внимание, что если вы используете Partitioning, вам нужно будет сканировать user_tab_partitions.num_rows
и user_part_col_statistics.num_nulls
.
Кроме того, я повторяю совет, который дали другие относительно статистики.Приведенный выше запрос может выдать некоторые ложные срабатывания.Я бы рассматривал результаты, полученные в результате этого запроса, как список кандидатов для дальнейшего изучения.Например, вы можете генерировать запросы, которые подсчитывают фактическое количество нулей для каждого столбца.