Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum schlägt mein MySQL MyISAM-Update mit CASE WHEN fehl und wie kann ich es beheben?

Patricia Arquette
Freigeben: 2024-11-27 18:01:11
Original
652 Leute haben es durchsucht

Why Does My MySQL MyISAM UPDATE with CASE WHEN Fail and How Can I Fix It?

Aktualisieren von MySQL-MyISAM-Tabellen mit CASE WHEN/THEN/ELSE

F: Beim Versuch, bestimmte Zeilen in einer großen MyISAM-Tabelle mit a zu aktualisieren Bei Verwendung der CASE-Anweisung verbraucht die Abfrage übermäßig viel CPU und aktualisiert alle Zeilen, einschließlich der nicht angegebenen. Was kann getan werden, um die Aktualisierung auf die vorgesehenen Zeilen zu beschränken?

A: Das Problem tritt auf, wenn die CASE-Anweisung keine ELSE-Klausel enthält. Standardmäßig werden Zeilen, die in der CASE-Anweisung nicht explizit erwähnt werden, NULL-Werte zugewiesen. Dies führt zu unnötigen Aktualisierungen in der gesamten Tabelle.

Um dieses Problem zu beheben, hängen Sie eine ELSE-Klausel an die CASE-Anweisung an und weisen Sie ihr den vorhandenen Wert der UID-Spalte zu. Dadurch wird verhindert, dass sich die Aktualisierung auf Zeilen auswirkt, die nicht in den WHEN-Klauseln angegeben sind.

Fügen Sie außerdem eine WHERE-Klausel ein, um explizit die Zeilen anzugeben, die aktualisiert werden sollen. Dadurch wird sichergestellt, dass nur die gewünschten Zeilen als Ziel ausgewählt werden.

Beispiel:

UPDATE `table` SET `uid` = CASE
    WHEN id = 1 THEN 2952
    WHEN id = 2 THEN 4925
    WHEN id = 3 THEN 1592
    ELSE `uid`
    END
WHERE id IN (1, 2, 3)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum schlägt mein MySQL MyISAM-Update mit CASE WHEN fehl und wie kann ich es beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage