#sql #sql-server
Вопрос:
Мне нужно обновить огромную таблицу (более 200 миллионов записей, 20 столбцов).
Я попытался обновить одну колонку:
update Table1 set [Customer]=Null where [Customer]='-' or len([customer])=0
И это заняло более 2 часов.
Я попробовал его на всех колонках, и он все еще работает, уже более 5 дней.
update Table1 set [Name]=Null where [Name]='-' or len([Name])=0
update Table1 set [Email]=Null where [Email]='-' or len([Email])=0
...
Кстати — в таблице нет никаких индексов или триггеров, только данные. База данных не используется, и режим восстановления прост.
Есть ли более эффективный способ обновления больших таблиц?
Комментарии:
1. Возможно, вам захочется выбрать новую таблицу, а затем заменить старую. Это вариант?
2. Можете ли вы просто создать несколько индексов и удалить их позже, если не хотите носить их с собой? Почему вы используете
len([Col])=0
вместо[Col]=''
(n)(var)столбцов символов?3. @Aadmaa,я открыт для вариантов, но я не вижу, как это быстрее, все равно нужно просмотреть каждую строку и каждый столбец
4. Вы могли бы попробовать; я почти уверен, что это будет на порядок быстрее. Добавьте индексы после выбора.
5. @squillman, столбцы-это nvarchar. в чем разница между len([Col])=0 и [Col]=»?