|
|
|
Как быстрее вставить столбец в огромную таблицу
|
|||
|---|---|---|---|
|
#18+
Посоветуйте. Табличка 9 млн. строк, есть уникальный составной индекс по 5 полям и пара внешних ключей. Надо добавиь столбец. Не ключевой, обычный столбик. Если добавляю через EM - делается ОЧЕНЬ долго и лог растет очень сильно. В общем, тяжело получается. Нет ли идей, как можно вставить столбец похитрее, а? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 10:00:02 |
|
||
|
Как быстрее вставить столбец в огромную таблицу
|
|||
|---|---|---|---|
|
#18+
Изменение структуры таблицы - разовая операция.При этом производиться куча работы.Если это надо сделать один раз - то ничего потерпишь :)).А если ... впрочем никакого если не должно быть!Иначе чего-то у вас с логикой приложения ни так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 10:05:49 |
|
||
|
Как быстрее вставить столбец в огромную таблицу
|
|||
|---|---|---|---|
|
#18+
Если добавляю через EM - делается ОЧЕНЬ долго и лог растет очень сильно А что, вы наверное добавляете столбец с default значением ? Если так, то все равно, что после добавления столбца запустить UPDATE для всех 9 млн. записей. Попробуйте добавть столбец с allow nulls Или если добавляете столбец куда-нибудь в середину, т.е. меняете порядок следования столбцов. Такая операция происходит вообще через временную таблицу, куда копируется все содержимое оригинальной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 10:16:48 |
|
||
|
Как быстрее вставить столбец в огромную таблицу
|
|||
|---|---|---|---|
|
#18+
2dao: Конечно разовая операция, конечно потерплю, но ведь всегда хочется все сделать поотимальнее :) 2Glory: Не, добавляю я с Allow Null, конечно, но не совсем в конец... В конец будет быстрее? Спасибо, ща попробую! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 10:59:46 |
|
||
|
Как быстрее вставить столбец в огромную таблицу
|
|||
|---|---|---|---|
|
#18+
а recovery model в simple переключить чтобы лог не дергать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 11:31:20 |
|
||
|
Как быстрее вставить столбец в огромную таблицу
|
|||
|---|---|---|---|
|
#18+
EM перед сохранением позволяет посмотреть скрипт, который будет использован для изменения таблицы. Я бы посоветовал его просмотреть. Как правило (и Glory это уже говорил) EM создает отдельную таблицу, куда вливает все данные, затем удаляет / переименовывает. К тому же еще снимает / накладывает ограничения и индексы. Возможно при использовании ALTER TABLE из QA это произойдет намного быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 11:31:46 |
|
||
|
Как быстрее вставить столбец в огромную таблицу
|
|||
|---|---|---|---|
|
#18+
Наверное имеет смысл представлять как на сервере хранятся данные. Сначала идут колонки, которые имеют фиксированный размер (int, char). Затем колонки, имеющие нефиксированный размер (varchar, все колонки которые могут иметь значеине null). Если поле имеет значение null, то оно вообще не записывается. Так что по идее если к таблице добавляется колонка, которая может содержать null, то в данных никаких изменений происходить не должно - только в заголовке. Это я про 6.5 читал, вряд что-то принципиально изменилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 11:39:41 |
|
||
|
Как быстрее вставить столбец в огромную таблицу
|
|||
|---|---|---|---|
|
#18+
Recovery Model конечно в Simple, но лог то все равно растет, куды ж ему деваться :) А насчет просмотра скрипта перед сорхранением таблицы - очень спасибо, что-то мне это в голову и не пришло, интересно посмотреть как он там столбцы вставляет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2002, 12:11:52 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1819250]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 335ms |

| 0 / 0 |
