[前][次][番号順一覧][スレッド一覧]

mysql:15705

From: 中川 貴 <中川 貴 <takashi.nakagawa@xxxxxxxxxx>>
Date: Thu, 29 Mar 2012 16:56:02 +0900
Subject: [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@xxxxxxxxxx
****************************************

(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)はどのような場合に設定するのか、よくわかりません。
> 
> よろしくご指導願います。
> 
> 


[前][次][番号順一覧][スレッド一覧]

     15703 2012-03-29 15:08 ["ochiai" <s.ochiai@x] Left Join句を付けたUPDATE処理時間が非常に長くかかって
->   15705 2012-03-29 16:56 ┣[中川 貴 <takashi.nak]                                       
     15706 2012-03-29 17:01 ┗[中川 貴 <takashi.nak]                                       
     15707 2012-03-29 17:12  ┗[中川 貴 <takashi.nak]                                     
     15708 2012-03-29 17:42   ┗["ochiai" <s.ochiai@x]                                   
     15709 2012-03-29 17:46    ┣[中川 貴 <takashi.nak]                                 
     15711 2012-03-29 17:58    ┃┗["ochiai" <s.ochiai@x]                               
     15712 2012-03-29 20:25    ┃ ┣[HIRATSUKA Sadao <hir]                             
     15713 2012-03-30 01:27    ┃ ┗[中川貴 <nora1962@xxx]                             
     15727 2012-04-11 17:03    ┃  ┗["ochiai" <s.ochiai@x] Re: Left Join句を付けたUPDATE処理時間が非常に長くかかって(長文)
     15728 2012-04-11 18:24    ┃   ┗[中川 貴 <takashi.nak]                         
     15729 2012-04-12 09:46    ┃    ┗[HIRATSUKA Sadao <hir]                       
     15730 2012-04-13 10:32    ┃     ┗["ochiai" <s.ochiai@x] Re: Left Join句を付けたUPDATE処理時間が非常に長くかかって(解決御礼)
     15733 2012-04-13 11:13    ┃      ┗[HIRATSUKA Sadao <hir]                   
     15710 2012-03-29 17:47    ┗[Masaaki Matsuyama <m]