Oracle 10g: запрос столбца DATA_DEFAULT из представления ALL_TAB_COLUMNS занимает много времени - PullRequest
2 голосов
/ 18 апреля 2011

Попробуйте выполнить этот SQL:

select OWNER,TABLE_NAME,COLUMN_NAME,DATA_TYPE,
       DATA_LENGTH,DATA_PRECISION,DATA_SCALE,NULLABLE
from all_tab_columns
where owner = 'USER';

Вам нужно будет изменить строку OWNER в предложении where. После выполнения вы, вероятно, заметите, что запуск не занял много времени. Теперь добавьте столбец DATA_DEFAULT следующим образом:

select OWNER,TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH,
       DATA_PRECISION,DATA_SCALE,NULLABLE,DATA_DEFAULT
from all_tab_columns
where owner = 'USER';

Это занимает вечность. Что случилось со столбцом DATA_DEFAULT?

Ответы [ 2 ]

4 голосов
/ 18 апреля 2011

Я не нахожу, что это происходит в моей базе данных 11.2, но я думаю, причина, по которой он может быть медленным, заключается в том, что DATA_DEFAULT - столбец LONG. Просто предположение, хотя.

0 голосов
/ 20 апреля 2011

Существуют ли существенные различия в плане объяснения с колонкой и без нее?(Вам может потребоваться некоторые дополнительные привилегии для запуска плана объяснения в этом представлении.) Находится ли предполагаемое число строк в пределах порядка фактического количества строк?

Объектам словаря данных нужна хорошая статистика, напримервсе остальные объекты, но люди склонны забывать о них.

Запустите такой запрос, чтобы увидеть, когда статистика в последний раз собиралась.Запрос включает в себя некоторые, но не все таблицы, используемые ALL_TAB_COLUMNS.Если LAST_ANALYZED является нулевым или очень старым, это плохой признак:

select last_analyzed, dba_tables.*
from dba_tables
where table_name in ('OBJ$', 'USER$', 'TAB$', 'COL$');

Кроме того, как отметил Тони Эндрюс, LONG могут вызывать некоторые проблемы.Но DATA_DEFAULT является одним из тех длинных, которые почти всегда очень крошечные или нулевые.Это заставляет меня думать, что это может быть проблема с вашим клиентом, а не сервером.Попробуйте выполнить запрос с помощью различных инструментов, например, SQL * Plus, SQL Developer и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...