kokoe blog

技術メモブログ

EC-CUBE 管理画面 顧客検索、受注検索でかたまる

E C - C U B Eの管理画面系で絶対ひっかかってる人いるだろっていうのを紹介します。お役にたてるといいのですけどねー

■現象

EC-CUBE管理画面「顧客マスタ」や「受注管理」で、ある条件の検索をすると画面がかたまる。(画面が真っ白とかね。)

※私のやった案件では、EC-CUBE2.4.4でも、EC-CUBE2.11.1でも両方再現しました。

ある条件とは、「顧客情報」「受注情報」「受注詳細」って感じで、複数DBテーブルにまたぐ?必要がある検索を行うと、処理に時間がかかってかたまります。(かたまっているというか、めっちゃ処理してるけど、時間がちょーっかかっている感じ。)

例えば、顧客検索で「購入商品」「最終購入日」を入れて検索してみます。データベースの件数にもよりますが、相当時間かかるはず。。。私がやった案件では、

dtb_products(商品情報) 約500件(表側で公開しているのは70件前後だったけど)

dtb_order(受注情報)約25,000件

dtb_order(受注詳細)約48,000件

っていう環境でやりましたが、画面うごかなくなった。

■原因

当方、システム専門の人間ではないので、ちゃんと説明できないのですが、「SQLチューニング」の問題みたいです。

だもんで、MySQLで起こりやすい(MySQLでだけ?の)現象らしい。

■対処方法

対処方法の一つは、データベースのあるカラムにインデックスをはるといいようです。

インデックス貼ってあげるSQL

ALTER TABLE `database_name`.`dtb_order` ADD INDEX `dtb_order_customer_id_key` USING BTREE(`customer_id`);

ALTER TABLE `database_name`.`dtb_order_detail` ADD INDEX `dtb_order_detail_order_id_key` USING BTREE(`order_id`);

他にも対処方法があるみたいですが、私はわからんです。

■ちょっと愚痴

EC-CUBE2.11系になってから、管理画面に「高度なデータベース管理」っていのがありまして、そこからインデックスはれるようなんですけども、なんで上記2つはないのかな?

他の回避方法が一般的だから?または、あまりでていない現象とか。。。?

とりあえず、EC-CUBE2.4.4の時に起こった現象が、2.11でも起こって印象深かったので記事に残しておきます。