2011年8月 2日

[mysql 15608] Re: Indexをつけるとと、update のwhere 句マッチしない [Ver.4.1.23]

平塚です。

On Tue, 2 Aug 2011 17:35:16 +0900
野副 勝己 <nozoe@xxxxx> wrote:

> バグ情報が何処にあるか解らなかった(バグ情報から検索する事が出来なかった
> …)
> ので、確信が持てずにいたのですが、平塚さんのメールでバグに該当している

> と言う事に確信が持てましたので、これで延命処置を図りたいと思います。
>
> ありがとうございました。

どういたしまして!


> P.S. 解せないのは、SELECT 文ではIndex が有効に働いているにも関わらず
> 何故、UPDATE 文ではIndex 検索で空振りするのだろうかと言うことです。
> #UPDATE コマンドの応答速度からすると、いきなり該当無しで返ってきてい
> #る気がする…

インデックススキャンはしているのですが、
誤った文字列で探しているのだそうです。


> 実行計画って、SELECT文のWHERE句とUPDATE 文のWHERE句で違うのでしょうか?
> 不思議です…

大雑把にしか説明できないのですが、

SELECT文は sql/sql_select.cc
UPDATE文は sql/sql_update.cc

で実行されていて、ロジックが入口から異なっています。

いわゆる実行計画というものは sql_select.cc の
JOIN::optimize というところで作られています。
sql_update.cc では処理がもう少し簡略化されています。

今回の不具合は sql_update.cc からストレージエンジンに検索条件を
渡すまでの間のどこかで、検索条件を壊してしまったことによるもの
だと思います。

--
平塚貞夫 hiratsuka.sadao@xxxxx


投稿者 xml-rpc : 2011年8月 2日 20:30
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/105827
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。