2012年3月29日

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

確信はありませんが、
EXPLAIN
SELECT `table-a`.`fa`,`table-b`.`fb`
FROM `table-a` LEFT JOIN `table-b` ON ( `table-a`.`Ka` = `table-b`.`Kb` )

でINDEXが使われていないのではないでしょうか?
原因は分かりませんがEngineがMyISAMだとUSE INDEXヒントをつけても
「Impossible WHERE noticed after reading const tables」が出ました。


InnoDBだとINDEXを使用するようです。

****************************************
コープ情報システム株式会社
運用事業部
コーププラザサービスデスクグループ
中川 貴
175-0094
東京都渋谷区渋谷3-29-8 コーププラザ5F
TEL 03-5778-8010
E-MAIL takashi.nakagawa@xxxxx
****************************************

(2012/03/29 15:08), ochiai wrote:
> お世話になります。
>
> Left Join句を付けたUPDATE処理時間が非常に長くかかって、処理に失敗しますので、解決策を教えてください。
>
> 実行したSQL
>
> UPDATE `table-a` LEFT JOIN `table-b` ON ( `table-a`.`Ka` = `table-b`.`Kb` )
> SET `table-a`.`fa` = `table-b`.`fb`;
>
> 経過時間 3600秒を過ぎても終了しません。
>
> ちなみに、作業環境は以下の通りです。
>
> 1.作業環境
> 1)サーバーマシンの環境
>   MySQLサーバ:バージョン5.5.11
>   (mysql-5.5.11-win32.msi)
>   Workbench:バージョン5.2.33CE Revision 7508
>   (mysql-workbench-gpl-5.2.33b-win32.msi)
>   OS:Windows 7 Professional SP1(32bit)
>   PC:DELL Vostro(Intel Core 2 Duo,CPU E7500 2.93GHz) RAM 2.00GB
> 2)クライアントマシンの環境
>   サーバマシン上で実行
>   実行時には他の処理は動かしていません。
> 3)データ(innodb)
>   table-a
>     レコード数:約25万件
>     レコードサイズ:約300バイト
>     `table-a`.`Ka`:VARCHAR(30) KEY設定済み
>   table-b
>     レコード数:約20万件
>     レコードサイズ:約300バイト
>     `table-b`.`Kb`:VARCHAR(30) ユニークKEY設定済み
>
> 2.関係しそうなことと思っていること
>
> 以下のような点はLeft Join句の効率化に影響しますでしょうか?
>
> 1)AdvancedタブのVarious/big-tablesをチェックする
>
> 2)AdvancedタブのVarious/join_buffer_size(現在131,072)を大きくする
>
> 3)AdvancedタブのVarious/read_buffer_size(現在49K)をチェックする
>
> 4)InnoDBタブのinnodb_additional_mem_pool_size(現在7M)を大きくする
>
> 5)InnoDBタブのinnodb_buffer_pool_size(現在300M)を大きくする
>
> 6)DBMS connection read time out (in seconds)の設定時間をもっと大きくし、処理が終わるのを待つ。
>
> 以上はWorkbenchのOption file画面での話です。
>
> 7)ジョインの結果を小さくするために、left joinテーブルとして処理に必須のフィールドのみを抽出したテーブルを作成し、そのテーブルを使用する。
>
> 思いつくのは以上のようなことです。
> なお、1)〜5)はどのような場合に設定するのか、よくわかりません。
>
> よろしくご指導願います。
>
>

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




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