Supposons que j'ai une table avec deux colonnes A et B. Il y a un index sur la colonne A, mais pas sur la colonne B. Je veux émettre plusieurs millions de requêtes comme:MySQL UPDATE optimisation?
UPDATE t1 SET b=b1 WHERE a=a1;
UPDATE t1 SET b=b2 WHERE a=a2;
....
Il y a partout de 1 à 100 000 lignes correspondant à chaque valeur unique de a
. En moyenne, il est autour de 100.
Pour chaque instruction de mise à jour en moyenne 60% des lignes ne seront pas modifiées car pour ces lignes b
a déjà la valeur désirée. Pour 30% des mises à jour, aucune des lignes correspondantes ne sera modifiée.
Est-il sensé d'utiliser des instructions comme celles-ci?
UPDATE t1 SET b=b1 WHERE a=a1 AND b<>b1;
aura-t-il SpeedUp le processus en éliminant les réécritures non nécessaires sur le disque ou est Mysql 5 assez intelligent pour reconnaître que rien n'est changé et il n'y a pas besoin d'écrire sur le disque?