В настоящее время я обновляю таблицу с миллионами записей, прошло 4 дня, и запрос все еще выполняется.
Я проверил монитор активности, показывает, что запрос запущен.
В журнале событий нет ошибок вообще.
Производительность мудрая:
- Tempdb на диске A (850 ГБ свободного места)
- файл базы данных на диске B (750 ГБ свободного места)
- 16 ГБ оперативной памяти
Пожалуйста, предложите мне, что мне делать?
Запрос
UPDATE
dbo.table1
SET
costPercentage = ISNULL(t2.PaymentIndex, 1.0),
t2.TopUp_Amt = (ISNULL(t2.PaymentIndex, 1.0) - 1.0)
* ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00),
Total_Tariff_Inc_t2 = ISNULL(t2.PaymentIndex, 1.0)
* ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00)
FROM
dbo.table2 t2
WHERE
LEFT(dbo.test1.procodet, 3) = LEFT(t2.ProviderCode, 3) COLLATE database_default
источник
Прежде всего, измените запрос на:
Как указано в первом сообщении Джеффа Модена в этом обсуждении , ваш запрос очень похож на тот, который он предупреждал о «эффекте Хэллоуина».
После этого эти ЛЕВЫЕ выражения должны быть проиндексированы. Ответ ГБН даст вам указания, как это сделать.
источник