Я не могу придумать способ ускорить это. Это делает сканирование таблицы, но я вроде как должен, потому что мне нужно обновить ВСЕ записи ...есть ЛЮБОЙ способ улучшить производительность по этому простому запросу?
Проблема в том, что эта таблица имеет МИЛЛИОНЫ записей ... примерно около 30 миллионов.
Это займет около 50 минут. У кого-нибудь есть подсказки о том, как я могу это улучшить?
update A
set A.product_dollar_amt = round(A.product_dollar_amt, 2),
A.product_local_amt = round(A.product_local_amt, 2),
A.product_trans_amt = round(A.product_trans_amt, 2)
from dbo.table A
В таблице в настоящее время куча (без кластерного индекса), так как он нигде не используется ... не уверен, что создание кластерного индекса позволит улучшить что-либо здесь.
Как насчет обновления в партии? –
как все будет иначе? –
Вы можете отслеживать запрос с помощью sp_WhoIsActive и посмотреть, происходят ли какие-либо необычные ожидания. Вы также можете загрузить этот результат в таблицу _different_, а затем переименовать его (или переместить его в другую схему.Тогда изменение будет мгновенным, но вам нужно будет хранить две таблицы, полные ваших 30 миллионов записей. –