2012年3月29日

[mysql 15712] Re: Left Join句を付けたUPDATE処理時間が非常に長くかかって

こんばんは、平塚です。
割り込みすいません。

On Thu, 29 Mar 2012 17:58:50 +0900
"ochiai" <s.ochiai@xxxxx> wrote:

> select_type table type possible_keys key key_len ref rows Extra
> SIMPLE table-a ALL NULL NULL NULL NULL 20万

> SIMPLE table-b index NULL Kb 63 NULL 14万
> Usingindex

こちらでそれっぽいテストケースを作って取得したEXPLAINが以下です。

+-+------+--+-------+-------+-------+----+--------------+------+
|d|select|ta|type |possibl|key |key_|ref |rows |
+-+------+--+-------+-------+-------+----+--------------+------+
|1|SIMPLE|ta|ALL |NULL |NULL |NULL|NULL |250791|
|1|SIMPLE|tb|eq_ref |PRIMARY|PRIMARY|4 |scott.ta.tb_id| 1|
+-+------+--+-------+-------+-------+----+--------------+------+

table-bに対するアクセスは、indexではなくeq_refになるのが理想です。

ochiaiさんのケースでは20万+20万×14万=280億レコードの評価が行われます。
私のケースでは25万+25万×1=50万です。

table-bのKbカラムにUNIQUE KEYがあるとのことですが、
Kbカラムが登場するのは複合キーの第2カラム以降だったりしないでしょうか。

あるいは、KaとKbのデータ型が異なっていたりしないでしょうか。

SHOW CREATE TABLE table-a\G
SHOW CREATE TABLE table-b\G

を見せていただけると、何か分かるかもしれません。
よろしくお願いいたします。

--
平塚貞夫 hiratsuka.sadao@xxxxx


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




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