Реляционная алгебра укакалась
От: Shmj Ниоткуда  
Дата: 30.12.16 01:18
Оценка:
В продолжение темы
Автор: Shmj
Дата: 29.12.16
.

Решил пойти другим путем и разбить запрос на 2 части. Вот такой простой запрос получился:

UPDATE dbo.Spending
SET SourceTransferIndex = tn.[Index] * 100000 + SourceTransferLocalIndex
FROM dbo.[Transaction] tn
WHERE tn.[Hash] = Spending.SourceTransactionHash


Индексы есть на tn.[Hash] и Spending.SourceTransactionHash (то есть объединяем индексированые поля, конечно, тип данных одинаковый).

Ну что может быть проще? Даже в простом хранилище ключ-значение очень просто выполнить такую операцию -- выберай порцию данных из dbo.Spending, находи по ключу [Hash] данные в dbo.[Transaction] и обновляй выбранные Spending. Что сложного? Делай порциями, диска вообще не требует.

И что вы думаете? MS SQL начала чего то мутить целый час, съела все место на диске и завершила работу с ошибкой нехватки места. Причем места отъела примерно столько же, сколько занимали обе таблицы. Ну дебилизм же
Отредактировано 30.12.2016 1:20 Shmj . Предыдущая версия . Еще …
Отредактировано 30.12.2016 1:19 Shmj . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.