как сгенерировать план выполнения, чтобы увидеть эффект нового столбца перед созданием нового столбца в таблице - PullRequest
0 голосов
/ 07 октября 2019

как извлечь план выполнения для таблицы с новым столбцом, прежде чем фактически добавить новый столбец в эту таблицу?

Возможно ли это вообще? Если да, пожалуйста, дайте мне знать, как.

1 Ответ

1 голос
/ 07 октября 2019

Новый столбец как таковой не влияет на план выполнения. Что может изменить план , так это то, что вы в конечном итоге будете делать с этим столбцом, и какие данные вы в него поместите.

Например, если у меня есть таблица 10 ГБ с 10 000 000 строк и выполните:

alter table T add NEW_COL varchar2(1000);

этот стол все еще точно 10G в размере. Сканирование займет очень много времени, и оптимизатор, скорее всего, разработает идентичные планы выполнения для существующих запросов.

Но, допустим, я теперь запускаю

update T set NEW_COL = rpad ('x', 1000);

Теперь каждая строка в моей таблице на 1000 байт больше. (Я отложу здесь такие проблемы, как цепочка и т. Д.), Что означает, что размер моей таблицы теперь составляет 20 ГБ. Это может оказать существенное влияние на планы (даже для запросов, которые не обращаются к новому столбцу), потому что размер таблицы больше - поэтому сканирование становится менее привлекательным и т. Д.

Планы выполнения - это оценки того, насколькобудет стоить выполнить запрос с точки зрения процессора, доступа к хранилищу и т. д., а не путем добавления новых столбцов.

Надеюсь, это поможет

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