プロが教える店舗&オフィスのセキュリティ対策術

こちらのページ(https://nslab.hatenablog.com/entry/20121104/MySQL)を参考にして特定カラムの値を1増やすことができたのですが、複数のカラムを同時に1づつ増やすにはどのようにしたらいいでしょうか?

たとえば、pageview と totalview という二つのカラムを1増やすために、下記2つを1つに統合することは可能でしょうか?

UPDATE article SET pageview = pageview + 1 WHERE id = 100;
UPDATE article SET totalview = totalview + 1 WHERE id = 100;

また、UPDATEはSELECTなどに比べて処理速度が遅いとどこかで読んだことがあります。
UPDATEは極力使わない方が良いのでしょうか?

A 回答 (3件)

普通にこう?


update article set pageview = pageview + 1,totalview = totalview + 1 WHERE id = 100;
    • good
    • 0
この回答へのお礼

できました!ありがとうございました!

お礼日時:2020/04/04 13:05

公式の説明を読めるようになりましょう


https://dev.mysql.com/doc/refman/5.6/ja/update.h …

カラム更新はカンマ区切りで複数書けます
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...

関係データベースにおける更新処理は、データの一意性を保つ必要があるため、
参照にくらべると時間がかかるのは当然ですので、
UPDATE 文の回数は少ないに越したことはないです。
    • good
    • 0
この回答へのお礼

ありがとうございました。updateはなるべく減らすようにしてみます。

お礼日時:2020/04/04 13:06

使用されている教科書や解説書またはWebサイトなのでupdate文のset句の記述方法をよく確認してください。

1つのupdete文の中のset句は1つだけ・・・と説明されていますか? その辺のこです。

あと、selectは条件に則した行の抽出・・・つまりは保存されているデータの読み込みです。
対してupdateはデータの書き込み・・・特に既存の値の置き換えです。二次記憶装置への書き込みはトランザクションの終了時ですが、元の値のデータ長さに対し更新する値がそれより長かったり短かったりするとメモリ内の操作であってもちょっと時間を要する処理をします。特にインデックスになている項目に対するupdateの場合は。
昔、データベースエンジンを開発した経験からしますとそんな感じです。

参考まで。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2020/04/04 13:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!