Maison > base de données > tutoriel mysql > Pourquoi ma mise à jour MySQL CASE WHEN est-elle lente et affecte-t-elle toutes les lignes ?

Pourquoi ma mise à jour MySQL CASE WHEN est-elle lente et affecte-t-elle toutes les lignes ?

Susan Sarandon
Libérer: 2024-11-25 11:21:11
original
924 Les gens l'ont consulté

Why is My MySQL CASE WHEN Update Slow and Affecting All Rows?

Mise à jour MySQL à l'aide de CASE WHEN/THEN/ELSE

Problème :

Lors de la tentative de mettre à jour une grande table MyISAM à l'aide d'une instruction CASE WHEN/THEN/ELSE, la requête monopolise le CPU et prend un temps excessif pour terminer. De plus, il met à jour toutes les lignes du tableau, même celles non spécifiées dans la requête.

Explication :

La raison de ce comportement est que MySQL interprète l'instruction CASE comme mise à jour de toutes les lignes du tableau. Les lignes qui ne correspondent à aucune des conditions WHEN se voient attribuer une valeur NULL.

Solution :

Pour éviter ce problème, la requête doit être modifiée pour inclure un ELSE instruction qui attribue la valeur existante aux lignes qui ne correspondent à aucune des conditions WHEN. De plus, une clause WHERE peut être utilisée pour limiter la mise à jour aux seules lignes spécifiées.

La requête corrigée :

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);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal