2011年8月 3日

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

野副です。


平塚さん

更なる解説、有難う御座います。
入り口が異なる事、了解しました。
渡すパラメータが壊れているのでは、幾ら頑張っても該当レコードには

マッチしないですよね…

本当に助かりました。

# 今回は、明日作業と言う時に念の為にと思い、色々確認してしていたら、
# SELECTに使ったキーをそのまま使って、UPDATE しているにも関わらず、
# レコードの内容が変わらない…と、ちょっと冷や汗が。。。
# まさか、Index付ける前は成功していたUPDATE文が、indexつけたらUPDATE
# が何もしないで返ってくるなんて、予想出来ていませんでした…

# 取り敢えず、急遽作業は延期し、自分で調べつつもこのMLに質問させて
# 頂きました。MLに投稿なんて、十数年振り?と言う位久々でした。
# 元々、PostgreSQL派だったので、MySQL歴はほんの数年
#(と言っても、最近は自分で面倒見る機会がへっているので、pkgやrpmで
# インストールする機会が増えソースコードからという事をほとんどしなくなり
# ました...)

>> -----Original Message-----
>> From: HIRATSUKA Sadao [mailto:hiratsuka.sadao@xxxxx]
>> Sent: Tuesday, August 02, 2011 8:31 PM
>> To: ml@xxxxx
>> Subject: [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月 3日 10:46
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/105828
トラックバック
コメント
コメントする




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