Я уверен, что этого не может быть сделано в 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
одновременно в отдельных сеансах и надеяться, что кэш буфера базы данных сохранил день, но кажется длинным.
ИЗМЕНИТЬ
Я не получил окончательного ответа, поэтому я задал тот же вопрос в Oracle-L:
http://www.freelists.org/post/oracle-l/Creating-multiple-indexes
Общий консенсус заключался в том, что он недоступен, но, возможно, будет полезной функцией. Самый полезный ответ был от Дэвида Олдриджа, который предположил, что если бы все индексы создания создавались одновременно, тогда Oracle "поступил бы правильно".