Próbuję zaktualizować tabelę MYISAM LARGE (25 milionów rekordów) przy użyciu skryptu CLI. Tabela nie jest zablokowana/używana przez cokolwiek innego.Aktualizacja aktualizacji MySQL WHEN/THEN/ELSE
Uznałem, że zamiast pojedynczych zapytań UPDATE dla każdego rekordu, równie dobrze mogę wykorzystać funkcję CASE.
Pole id
jest PODSTAWOWE. Podejrzewam, że następujące zapytanie powinno zająć milisekundy.
UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
END
Lo i oto, zapytanie wieńczy procesor i nie kończy się na zawsze.
Następnie, ku mojemu zaskoczeniu, dowiedziałem się, że zapytanie aktualizuje wszystkie 25 milionów wierszy, umieszczając NULL na wierszach, których nie określiłem.
Jaki jest tego cel? Czy mogę po prostu wykonać aktualizację MASS dla określonych wierszy bez aktualizowania 25 milionów wierszy za każdym razem, gdy wykonuję to zapytanie? Czy muszę wykonać indywidualne aktualizacje, a następnie zatwierdzić?
kiedy nie określ "else" w instrukcji 'case' domyślnie jest' null' –