У меня 2 стола. Один имеет 1 миллион строк (Таблица 1), а другой - 99 миллионов строк (Таблица 2). Оба они находятся в отдельных схемах. У них похожие конструкции, так что проблем нет.
Мой вопрос будет таким:
Мне нужна таблица, содержащая данные обеих таблиц в схеме, содержащей Таблица 1.
Было бы быстрее запустить код для передачи всех 99 миллионов строк Таблица 2 в Таблица 1
ИЛИ ЖЕ
Было бы быстрее запустить код для передачи всего 1 миллиона строк в Таблица 2, а затем запустить код для изменения схемы Таблица 2 на схему Таблица 1?
ИЛИ ЖЕ
Все ли действительно будет мгновенно?
@SeanLange, это просто мысленный эксперимент, я все еще учусь, и мне было просто любопытно. Это было бы полезно, как только я займусь этим. Еще один вопрос от меня к вам: изменение схемы таблицы происходит мгновенно, верно? Это не значит, что он перемещает данные физически, он просто переименовывает параметр / переменную схемы или что-то еще, верно?
Нет, изменение схемы таблицы не происходит мгновенно. Если вы меняете типы данных, он должен преобразовать все строки в новый формат хранения и, возможно, переиндексировать и тому подобное. После этого вы также захотите провести некоторое обслуживание, чтобы свести к минимуму разбиение страниц и тому подобное. Также любые изменения схемы должны регистрироваться для сохранения атомарности.
Спасибо! Это очень помогает. Теперь я понимаю больше.





Насколько я понимаю, вы хотите вставить все записи из таблицы 2 в таблицу 1. Если это так, я бы предложил удалить индексы в таблице 1, запустить вставку, а затем перестроить ее. В качестве альтернативы вы можете оставить индексы включенными, но это замедлит работу ПУТЬ ВНИЗ. Другое решение, которое я предпочитаю, - это создать таблицу 3, вставить в нее каждую из двух таблиц, построить индекс, затем переименовать таблицы 1 и 2 в TableName_Backup и переименовать таблицу 3 так, как вы хотите. Второе решение должно дать вам оптимальные результаты, сохраняя при этом обе исходные таблицы в исходном состоянии, пока вы проверяете данные. Как только вы почувствуете себя хорошо, либо поместите две исходные таблицы в место архива, либо отбросьте их, в зависимости от политики вашей компании.
Но разве это не займет больше времени? Учитывая, что теперь мне придется передать 100 миллионов строк данных? И я хочу не только вставить все строки таблицы 2 в таблицу 1. У меня есть 2 возможные процедуры, которые мы могли бы выполнить, и я спросил, какая из 2 будет оптимальной. Схема также задействована, таблицы 1 и 2 находятся в разных схемах. Мы рассмотрим то, что вы нам дали. Спасибо. Всегда полезно иметь резервную копию.
Хм??? Вы хотите получить одну таблицу со 100 миллионами строк? Конечно, было бы в 98 раз быстрее переместить 1 миллион строк вместо 99 миллионов строк. И нет, это не произойдет мгновенно. Вы должны сначала прочитать, затем записать, а затем удалить 1 миллион строк. Или вы можете сделать это с 99 миллионами строк. Настоящий ответ, конечно, заключается в том, почему вы сами не попробовали это на тестовом сервере?