Я почти уверен, что это невозможно сделать в Oracle, но я бы хотел оказаться ошибочным ...
Скажем, у меня огромная таблица с множеством столбцов, и я хочусоздать индексы на дюжине или около того столбцов.Используя Oracle, я запускал несколько последовательных операторов create index
, а затем выключал и кипятил чайник.
Каждый create index
должен сканировать каждую строку в таблице, чтобы сформировать индекс.
то есть 10 индексов = 10 полных сканирований.
Можно подумать, что очевидной оптимизацией будет сканирование таблицы один раз и индексирование 10 столбцов одновременно.Не так ли?
create indexes on mytable (
ix_mytable_cola (cola),
ix_mytable_colb (colb),
ix_mytable_colc (colc)
);
Так очевидно, что должна быть веская причина, почему его там нет.
Есть идеи?
Я мог бы запустить каждый create index
одновременно в отдельных сеансахи надеюсь, что буферный кеш базы данных сохранил день, но, похоже, слишком долго.
EDIT
Я не получил однозначного ответа, поэтому задал тот же вопросв Oracle-L:
http://www.freelists.org/post/oracle-l/Creating-multiple-indexes
По общему мнению, он недоступен, но, возможно, будет полезной функцией.Наиболее полезный ответ был от Дэвида Олдриджа , который предположил, что если все операторы создания индекса будут запущены одновременно, то Oracle «сделает правильно».