バージョン選択

フォーラム

メニュー

オンライン状況

57 人のユーザが現在オンラインです。 (49 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 57
もっと...

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > 管理機能 > 商品情報の項目追加についての最適化

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mizuvan
投稿日時: 2017/4/14 17:26
対応状況: 解決済
長老
登録日: 2013/3/26
居住地:
投稿: 253
商品情報の項目追加についての最適化
商品情報に項目をどんどん追加して、結果100項目以上を追加する状態となってしまいました

そこでお聞きしたいのですが、dtb_products へ現在追加していますがこれらは、例えば dtb_products_2 、dtb_products_3 といった具合に分けたほうが読み込み速度などが向上して最適化されるものでしょうか?

どうも最近、商品一覧の表示に時間がかかるような気がします。

どなたかアドバイスをいただけますと嬉しいです



[EC-CUBE] 2.13.2
[レンタルサーバ] チカッパ
[OS] Windows10
[PHP] 5.4.45
[データベース] MySQL 5.6.13
[WEBサーバ] Apache
[ブラウザ] Chrome 56.0


----------------

468
投稿日時: 2017/4/14 22:44
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 707
Re: 商品情報の項目追加についての最適化
追加された項目が常に必要では無い場合は、テーブルを分けたほうが良いかと思いますが、
商品として情報を扱う時に必ず必要なのであれば1つのテーブルにしたほうが効率が良いのではないかと思います。
基本的にテーブルの結合が無いSQLのほうが速いと思います。

表示速度の場合、DB以外にボトルネックがある可能性もあると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

umebius
投稿日時: 2017/4/15 7:07
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 712
Re: 商品情報の項目追加についての最適化
どちらのケースも目にするので、何が正解というわけではありませんが。
商品数はどの程度か、100以上の項目はどういうタイプが多いのかなどにもよりますね。
一度に読み込む項目が多ければ多いほどメモリ消費が増えるのは間違いないです。

SELECTで読み込む列を限定するだけで劇的に表示速度が改善したなんていう例も見たことがあります。


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


mizuvan
投稿日時: 2017/4/15 14:11
対応状況: 解決済
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: 商品情報の項目追加についての最適化
ありがとうございます。

商品情報としての項目がほとんどですので1つのテーブルの方が良さそうです。DB以外を探ってみます


----------------

mizuvan
投稿日時: 2017/4/15 14:13
対応状況: −−−
長老
登録日: 2013/3/26
居住地:
投稿: 253
Re: 商品情報の項目追加についての最適化
ありがとうございます

SELECTで限定する手もあったのですね
勉強になりました!


----------------

yuh
投稿日時: 2017/4/19 0:52
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1392
Re: 商品情報の項目追加についての最適化
よっぽど変なPHPを書かない限りDBがボトルネックになります。

商品数によってですが、商品数がある程度増えた場合最初に重たくなるのが商品一覧で、
次におすすめ商品のブロックを設置しているページになります。

LC_Page_Products_List.phpの商品を検索している部分のクエリで
COUNT(*)している部分と、実際に検索している部分の二つメインのクエリがありますが、
そのクエリをSQL_CALC_FOUND_ROWSでまとめて取ってしまう方法とか、
SC_ProductsのJOINしている部分を少し変更する方法があります。
SQL_CALC_FOUND_ROWSの方は少しめんどくさいので割愛。
SC_Productsの方は
getListByProductIdsに渡された$arrProductIdをlistsに渡して、そのままalldtlSQLまで渡したうえで$objDBFactory->alldtlSQLに渡して
その中で


    ,T4.point_rate
                    ,T4.deliv_fee
                    ,dtb_maker.name AS maker_name
                FROM dtb_products
                    INNER JOIN (
                        SELECT product_id
                            ,MIN(product_code) AS product_code_min

このようになっている部分を$arrProductIdにデータがある場合のみ

    ,T4.point_rate
                    ,T4.deliv_fee
                    ,dtb_maker.name AS maker_name
                FROM 
( SELECT * FROM dtb_products WHERE product_id IN (' . implode(",",($product_id_ary)) . ') ) as dtb_products
                    INNER JOIN (
                        SELECT product_id
                            ,MIN(product_code) AS product_code_min

このような形で絞り込んだ上でINNER JOIN する事で読み込みが速くなります。

もっと色々手を加えればもっと速くなりますよ。


----------------
ec-cube2系の速度UPしてみました。(商品数:100万件)
http://speedtest2.ec-lab.net/products/list.php?category_id=15
ec-cube2系最速!(自称)

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,102名です
総投稿数は82,901件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1643
4
yuh
1392
5
red
1066
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
784
10
umebius
712
11
468
707
12
tao_s
651
13 sumida 638
14
homan
633
15 karin 618
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© LOCKON CO.,LTD. All Rights Reserved.