dポイントプレゼントキャンペーン実施中!

MySQLで、UPDATE tablename SET hoge = ? WHERE id = ? (どっちの?もランダムな数値)で、UPDATEのベンチマークをとったのですが、idにインデックスがついている状態だと高速に処理できました。500プロセスで1000回実行しましたが1000QPSでした。

ちなみに100万レコード入ってます。カラムは20程度でintとvarcharしかありません。


単純にUPDATEもレコード検索するからインデックス使うということなんですかね???

どなたか詳しい方この現象について詳しく教えて頂けないでしょうか。
よろしくおねがいします。

A 回答 (3件)

WHERE句で書いている項目にインデックスがあれば、SELECTは確実に早くなります。

例外はあるけど。
UPDATE,DELETEも早くなるでしょう。
但しINSERTは遅くなります。UPDATE,DELETEも遅くなる場合もあります。
一長一短です。
    • good
    • 0

検索条件に該当するインデックスが定義されていなければ、データが100万件あったら


100万件すべてを検索条件と一致しているかいちいち比較してしまうということです。

インデックスの中は昇順になるように並べられて(管理されて)いるので、

検索条件にマッチするところを見つけるのも、範囲外と判定して検索を終了するのも

余計な検索(比較)をしない分効率が良いわけです。
    • good
    • 1

> 単純にUPDATEもレコード検索するからインデックス使うということなんですかね???



インデックスは、その為に存在します。
WHERE句で指定したものにインデックスが指定されていて、
かつ、DBMSがその方が速いと判断すればそれが使われます。
    • good
    • 0

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