質問 > フロント機能 > 商品管理で商品コード検索不可 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
north |
投稿日時: 2011/9/25 23:29
対応状況: −−−
|
半人前 登録日: 2011/9/11 居住地: 投稿: 20 |
商品管理で商品コード検索不可 お世話になっております。
ec-cube2.11を利用しています。 3000アイテムの商品を登録しています。 管理者ページ、商品マスタで商品コード検索すると、 ずっと検索中のまま、 全く検索できません。 皆様の知見をお貸しください。 どうぞよろしくお願いします。 |
yuse |
投稿日時: 2011/9/26 11:00
対応状況: −−−
|
一人前 登録日: 2011/2/13 居住地: 投稿: 76 |
Re: 商品管理で商品コード検索不可 こんにちわ。
たぶん、商品登録数による気がします。。 いくつか気づいたところです。 ・使用しているDB(MySQL?) ・サーバーは自前のものorレンタルサーバー ・商品コードだけでなく他の検索条件でも遅いかどうか あたりも記載されると、みなさん回答がしやすくなると思います。 ちなみに、商品コードの場合、SQL的に、in句問合せがあるので、ここ一帯をexistsで書き換えてやると少し早くなる可能性があります。 |
north |
投稿日時: 2011/9/26 18:19
対応状況: −−−
|
半人前 登録日: 2011/9/11 居住地: 投稿: 20 |
Re: 商品管理で商品コード検索不可 yuseさん
ご返事ありがとうございました。 ・DBはMySQLです。 ・登録商品数は約3000アイテム。 ・アイルのレンタルを使っています。 ・商品コードのみ検索はめちゃくちゃ遅い。 LC_Page_Admin_Products商品管理ページクラスのソースを確認したところ 商品名検索は $where .= " AND name LIKE ?"; 商品ID検索は $where .= " AND product_id = ?"; 商品コードはdtb_products商品テーブルにないので $where .= " AND product_id IN (SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? GROUP BY product_id)"; 上記のSQL文は検索遅い原因となりますか? どうぞよろしくお願いします。 |
yuse |
投稿日時: 2011/9/26 19:00
対応状況: −−−
|
一人前 登録日: 2011/2/13 居住地: 投稿: 76 |
Re: 商品管理で商品コード検索不可 どうもー
レンタルサバだと、サーバーの設定チューニングは難しそうなので、 まずはSQLを疑ってみるのがよいかもしれません。 「商品コードのみ」ということは、in句が遅くしている可能性があります。ちなみにステータスやカテゴリの条件も同様に遅いと思います。 likeを使っているので、インデックスを張っても効果がないので、 まずはin句をexists句に書き換えるあたりでしょうか。 289行目あたりを、
ただネックなのは、ここの処理は件数とデータ取得の2回に分けて SQLを発行しており、その時に若干SQLが違うので、それごとにdtb_productsの接頭句を分けてやる必要があります。 件数 : dtb_products データ取得: alldtl ・・うまいことやれればよいのですが。 まずは、existsに置き換えたもの単体でSQLを発行してみて、本当に早くなったかどうか確認してみてください。 |
tao_s |
投稿日時: 2011/9/26 23:34
対応状況: −−−
|
仙人 登録日: 2008/8/20 居住地: 東京 投稿: 799 |
Re: 商品管理で商品コード検索不可 1回SQL走らせちゃった方が早いかもしれません。
先に SELECT product_id FROM dtb_products_class WHERE product_code ILIKE ? GROUP BY product_id をやって、その値を配列にして AND product_id IN (?) とかでやった方が早いかもしれません
|
north |
投稿日時: 2011/9/27 10:46
対応状況: −−−
|
半人前 登録日: 2011/9/11 居住地: 投稿: 20 |
Re: 商品管理で商品コード検索不可 yuseさん
ご返事ありがとうございました。 289行目あたりに以下のソースを入り変えてシステムエラーが発生しました。 AND exists (SELECT * FROM dtb_products_class WHERE product_code LIKE ? and dtb_products.product_id = dtb_products_class.product_id GROUP BY product_id ) 原因はdtb_products.product_id = dtb_products_class.product_idでしょうか?product_idは検索対象なのにイコール条件になりません。 自分は以下の方法で商品コード検索不具合を解決しました。 dtb_products "商品情報テーブル"の comment3 検索キーワードを利用し comment3 検索キーワードは"商品コード,商品名"で登録しているから、 289行目あたりを、 $where .= " AND comment3 LIKE ?"; に入り変えれば検索は非常に早くなった。 ありがとうございました。 |
north |
投稿日時: 2011/9/27 10:52
対応状況: −−−
|
半人前 登録日: 2011/9/11 居住地: 投稿: 20 |
Re: 商品管理で商品コード検索不可 tao_sさん
ご返事ありがとうございました。 自分はSQLに詳しくないので 先にSQL走らせる方法は分かりません。 自分は以下の方法で試して商品コード検索は検索は非常に早くなった。 dtb_products "商品情報テーブル"の comment3 検索キーワードを利用し comment3 検索キーワードは"商品コード,商品名"で登録しているから、 289行目あたりを、 $where .= " AND comment3 LIKE ?"; 上記の実装方法に問題があれば 是非ご指摘をお願いします。 ありがとうございました。 |
neosoft |
投稿日時: 2011/9/27 12:35
対応状況: −−−
|
新米 登録日: 2010/12/16 居住地: 東京都 投稿: 8 |
Re: 商品管理で商品コード検索不可 そうですね。
EC-CUBEは、商品が500件とかなるとかなり遅くなります。 DBがpostgresだといいらしいです。 mysqlだとカスタマイズが必要です。 postgresSQLをお勧めいたします。
|
shutta |
投稿日時: 2012/4/13 18:57
対応状況: −−−
|
仙人 登録日: 2010/2/4 居住地: 関西 投稿: 835 |
Re: 商品管理で商品コード検索不可 引用:
古いスレッドを掘り起こしてすみません。 こちらでも同様の症状が発現しましたので、ソースを調査して修正してみました。 修正内容等は、下記をご覧ください。 商品管理> 商品コードで検索すると遅い(MySQL) http://svn.ec-cube.net/open_trac/ticket/1749 チェンジセット 21740 http://svn.ec-cube.net/open_trac/changeset/21740
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |