Obecnie aktualizuję tabelę z milionami rekordów, minęły 4 dni, a zapytanie jest nadal wykonywane.
Sprawdziłem, czy monitor aktywności pokazuje, czy zapytanie jest uruchomione.
W dzienniku zdarzeń nie ma żadnych błędów.
Pod względem wydajności:
- Tempdb na dysku A (850 GB wolnego miejsca)
- plik bazy danych na dysku B (750 GB wolnego miejsca)
- 16 GB pamięci RAM
Proszę zasugerować mi, co powinienem zrobić?
Zapytanie
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
źródło
Przede wszystkim zmień zapytanie na:
Jak wskazał pierwszy post Jeffa Modena w tej dyskusji , twoje zapytanie jest bardzo podobne do tego, które ostrzegał przed „efektem Halloween”.
Następnie te LEWE wyrażenia muszą zostać zindeksowane. Odpowiedź gbn daje wskazówki, jak to zrobić.
źródło