• ベストアンサー

UPDATEつてインデックス貼ってると速くなる!?

MySQLで、UPDATE tablename SET hoge = ? WHERE id = ? (どっちの?もランダムな数値)で、UPDATEのベンチマークをとったのですが、idにインデックスがついている状態だと高速に処理できました。500プロセスで1000回実行しましたが1000QPSでした。 ちなみに100万レコード入ってます。カラムは20程度でintとvarcharしかありません。 単純にUPDATEもレコード検索するからインデックス使うということなんですかね??? どなたか詳しい方この現象について詳しく教えて頂けないでしょうか。 よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

WHERE句で書いている項目にインデックスがあれば、SELECTは確実に早くなります。例外はあるけど。 UPDATE,DELETEも早くなるでしょう。 但しINSERTは遅くなります。UPDATE,DELETEも遅くなる場合もあります。 一長一短です。

その他の回答 (2)

  • noyuo
  • ベストアンサー率39% (33/84)
回答No.3

検索条件に該当するインデックスが定義されていなければ、データが100万件あったら 100万件すべてを検索条件と一致しているかいちいち比較してしまうということです。 インデックスの中は昇順になるように並べられて(管理されて)いるので、 検索条件にマッチするところを見つけるのも、範囲外と判定して検索を終了するのも 余計な検索(比較)をしない分効率が良いわけです。

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.2

> 単純にUPDATEもレコード検索するからインデックス使うということなんですかね??? インデックスは、その為に存在します。 WHERE句で指定したものにインデックスが指定されていて、 かつ、DBMSがその方が速いと判断すればそれが使われます。