3つの値のいずれかが異なる場合にのみ、mysqlの行の3つの列の値を更新しようとしています。
私はのテーブルを持っていると言う
x、y、z、id列
私は現在、
方法A
update foo set x = 'x_value', y = 'y_value', z = 'z_value' where id = 'unique_id'
and ((x <> 'x_value') or (y <> 'y_value') or (z <> 'z_value'))
私はmysqlの理論的なベンチマーク/アーキテクチャについてあまり知りません、そして私はステートメントが
方法B
update foo set x ='x_value' where id = 'unique_id' and ((x <> 'x_value'));
update foo set y ='y_value' where id = 'unique_id' and ((y <> 'y_value'));
update foo set z ='z_value' where id = 'unique_id' and ((z <> 'z_value'));
優れているか優れています。
メソッドBは、1つの列のみが変更された場合に1回の書き込みと3回の読み取りのみを実行するのに対し、メソッドAでは3回の書き込みと3回の読み取りを実行することに気付きました。メソッドBは、行に3回インデックスを付けます。
前もって感謝します!