Я имею дело с огромной таблицей с 618 столбцами. Команда не хочет приступать к исследованию того, какие столбцы не используются, и изменению кода для их удаления, и я понимаю ограничения по времени. Одно из предложений состоит в том, чтобы определить, какие столбцы из этой таблицы являются наиболее доступными или часто используемыми, и изменить порядок столбцов. Я оставил настройку экспертам, и мне поручили идентифицировать такие столбцы.
Итак, я запрашиваю all_tab_columns, пытаясь найти простой способ выполнить задачу. Мое внимание привлекли четыре столбца: Num_distinct, Density, Num_nulls, Sample_size. Я подумал, что соотношение между sample_size и num_nulls может быть способом идентификации наиболее часто используемых столбцов. Чем ближе это соотношение к 1, тем выше вероятность использования. Но, как обычно, это не может быть так просто, потому что я обнаружил, что получаю сумасшедшие коэффициенты, поскольку у меня есть столбцы в пределах NUM-NULLS в 80Millions-ish, а SAMPLE_SIZE составляет всего 141.
Интересно, была ли у кого-то похожая ситуация или у кого-то есть предложение о том, что является лучшим подходом для этого. Заранее спасибо.
Я выполнил запрос ниже и сгенерировал список столбцов на основе статистики. По крайней мере, таким образом у меня есть представление о том, что мне нужно доставить.
выберите ts.owner, ts.table_name, ts.column_name, tc.column_id, t.num_rows, ts.num_nulls, случай, когда nvl(ts.num_nulls,0) > 0, затем (1 - round(((ts.num_nulls / t .num_rows)),6)) когда nvl(ts.num_nulls,0) = 0, то 1 end UsagePerc, ts.num_distinct, ts.density from all_tables t join all_tab_col_statistics ts on ts.owner = t.owner and ts.table_name = t.table_name объединяет all_tab_columns tc на tc.owner = ts.owner и tc.table_name = ts.table_name и tc.column_name = ts.column_name, где t.owner = 'THE_OWNER' и t.table_name = 'THE_HUGE_TABLE' в порядке ts. num_nulls, описание ts.density