次に 2 つのクエリを示します。クエリ最適化の観点から、どれが良いか。
//Query 1
UPDATE `table_name` SET `column` = '455' WHERE `row_id` = '433200';
//Query 2
UPDATE `table_name` SET `column` = `column`+1 WHERE `row_id` = '433200';
ありがとう、ヨグ
次に 2 つのクエリを示します。クエリ最適化の観点から、どれが良いか。
//Query 1
UPDATE `table_name` SET `column` = '455' WHERE `row_id` = '433200';
//Query 2
UPDATE `table_name` SET `column` = `column`+1 WHERE `row_id` = '433200';
ありがとう、ヨグ
MySQL に文字列を整数に変換させなければ、違いはごくわずかだと思います。型が整数の場合、値を引用符で囲まないでください。
UPDATE `table_name` SET `column` = 455 WHERE `row_id` = 433200;
と
UPDATE `table_name` SET `column` = `column` + 1 WHERE `row_id` = 433200;
ただし、クエリは 2 つの異なることを示しています。明示的に値を設定する最初のものは、スレッドセーフではありません。2 つ以上のセッションがある場合、どちらも値をインクリメントしようとすると、最後に実行した方が値を設定し、他の値が失われる可能性が高くなります。たとえば、3 つの接続が同時にクエリを実行した場合、値は 1 回だけ増加する可能性があります。これを回避するには、SELECT の前にテーブルを明示的にロックし、UPDATE の後に解放する必要があります。
値をインクリメントする 2 番目のクエリは、スレッド セーフです。3 つの接続がすべて同時にクエリを実行した場合、値は 3 回増加します。
row_id
は文字列でcolumn
はなく整数であることをお勧めします。もしそうなら、なぜmysqlにタイプを変換するように頼むのですか?
最初のクエリの方が速いと思います
2 番目に、値の取得と追加の 2 つの追加操作があります。