- 締切済み
UPDATEとSELECTのEXPLAINの違い
UPDATE、SELECTで共に同一のテーブルの同一の主キーを指定したWHERE検索をEXPLAINで行ったところ、 SELECTに関してはtype値がconstになり、 UPDATEに関してはtype値がrangeになりました。 その他の違いといえば、UPDATEの場合はExtra値がUsing whereになるだけで、他は特に差異がありません。 UPDATEで変更する列にインデックスを作成してみても(WHEREで指定する列も含め)、やはりconstにはなりませんでした。 なぜこのような違いが発生するのでしょうか? また、UPDATEステートメントでもtype値をconstにするためにはどのようにすればよいでしょうか? よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
そもそもUPDATEをEXPLAINする必要があるかどうかはおいとくとして (一般的な環境ではエラーになる?) SELECTは単純にレコードをズバリ指定できればconstになりますが、 UPDATEは1レコードだけみればよいのではなくインデックスやユニークなどの 属性も含めて処理するからrangeになるのではないかと勝手に思っています そういうものだと思うしかないような・・・