Я имею дело с огромной таблицей, которая имеет 618 столбцов. Команда не хочет исследовать, какие столбцы не используются, и изменять код для их удаления, и я понимаю, что время ограничено. Одно из предложений состоит в том, чтобы определить, какие столбцы из этой таблицы являются наиболее доступными или часто используемыми, и изменить порядок столбцов. Я оставил настройку экспертам, и мне поручили идентифицировать такие столбцы.
Итак, я запрашиваю all_tab_columns, пытаясь выяснить простой способ выполнить задачу. Четыре колонки привлекли мое внимание: Num_distinct, Density, Num_nulls, Sample_size. Я думал, что соотношение между sample_size и num_nulls может быть способом идентификации наиболее используемых столбцов. Чем ближе это отношение к 1, тем выше вероятность его использования. Но, как обычно, это не может быть так просто, потому что я обнаружил, что я схожу с ума по крысе ios, поскольку у меня есть столбцы в NUM-NULLS в 80Millions-i sh, а SAMPLE_SIZE - только 141.
Интересно, была ли у кого-то похожая ситуация или у кого-то есть предложение о том, что лучше для этого подходит. Заранее спасибо.
Я выполнил запрос ниже и сгенерировал список столбцов на основе статистики. По крайней мере, так у меня есть представление о том, что мне нужно доставить.
выберите ts.owner, ts.table_name, ts.column_name, t c .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 UsagePer c, ts.num_distinct, ts.density из all_tables t присоединиться к all_tab_col_statistics ts on ts.owner = t.owner и ts.table_name = t.table_name объединяют all_tab_columns t c в t c .owner = ts.owner и t c .table_name = ts.table_name и t c .column_name = ts.column_name где t.owner = 'THE_OWNER' и t.table_name = 'THE_HUGE_TABLE' упорядочены по ts.num_nulls, ts.density des c