バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

機能要望 > その他 > MySQL での一覧商品表示の速度向上について

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
hakaselab
投稿日時: 2009/3/25 23:01
対応状況: −−−
半人前
登録日: 2008/9/4
居住地: 広島
投稿: 28
Re: MySQL での一覧商品表示の速度向上について
お世話になっております。高橋@株式会社システムフレンドです。 seasoft さん、いろいろとありがとうございます。また lucky7 さんも試して下さってありがとうございます。

ちょっとわからないんですが、改行部分とかをつけずにそのまま流してもダメでしょうか(改行をおこなったことでスペースが消えてるとかかもです、ちょっとわからないのですが)?

ただ、どうも公式のほうで改善されているみたいですね、なによりです:D

また何かあったら、よろしくお願いします。


----------------
-------------------------------
株式会社システムフレンド
高橋純一

EC-CUBE工房
http://ec-cube.systemfriend.co.jp/
-------------------------------

lucky7
投稿日時: 2009/3/26 0:31
対応状況: −−−
一人前
登録日: 2008/6/2
居住地: 東京近郊
投稿: 101
Re: MySQL での一覧商品表示の速度向上について
seasoftさん
>別解にて回避できたようですね。
詳細画面の表示は早くなりました^^
ただ、目的の一覧画面の最適化は相変わらずエラーです><

hakaselabさん
このたびは貴重な情報ありがとうございます!
ただ、残念ながらまだうまく機能させられていません><

現在のソース
"vw_products_allclass" => '
(SELECT
pr.product_id
,pl.product_code_min
,pl.product_code_max
,pl.price01_min
,pl.price01_max
,pl.price02_min
,pl.price02_max
,pl.stock_min
,pl.stock_max
,pl.stock_unlimited_min
,pl.stock_unlimited_max
,pr.del_flg
,pr.status
,pr.name
,pr.comment1
,pr.comment2
,pr.comment3
,pr.comment4
,pr.comment5
,pr.comment6
,pr.comment7
,pr.comment8
,pr.comment9
,pr.comment10
,pr.comment11
,pr.comment12
,pr.comment13
,pr.comment14
,pr.comment15
,pr.comment16
,pr.comment17
,pr.comment18
,pr.comment19
,pr.comment20
,pr.comment21
,pr.comment22
,pr.comment23
,pr.comment24
,pr.comment25
,pr.update_date
,pr.main_list_comment
,pr.main_image
,pr.main_list_image
,pr.product_flag
,pr.deliv_date_id
,pr.sale_limit
,pr.point_rate
,pr.sale_unlimited
,pr.create_date
,pr.deliv_fee
,pc.rank
,cc.rank AS category_rank
,cc.category_id
FROM
(((SELECT
product_id as product_id_sub
,MIN(product_code) AS product_code_min
,MAX(product_code) AS product_code_max
,MIN(price01) AS price01_min
,MAX(price01) AS price01_max
,MIN(price02) AS price02_min
,MAX(price02) AS price02_max
,MIN(stock) AS stock_min
,MAX(stock) AS stock_max
,MIN(stock_unlimited) AS stock_unlimited_min
,MAX(stock_unlimited) AS stock_unlimited_max
FROM dtb_products_class GROUP BY product_id
) AS pl
LEFT JOIN dtb_products AS pr ON pl.product_id_sub = pr.product_id) LEFT JOIN dtb_product_categories AS pc ON pr.product_id = pc.product_id) LEFT JOIN dtb_category AS cc ON pc.category_id = cc.category_id) ',

エラー内容
DB Error: syntax error

SELECT DISTINCT product_id FROM
(SELECT
pr.product_id
,pl.product_code_min
,pl.product_code_max
,pl.price01_min
,pl.price01_max
,pl.price02_min
,pl.price02_max
,pl.stock_min
,pl.stock_max
,pl.stock_unlimited_min
,pl.stock_unlimited_max
,pr.del_flg
,pr.status
,pr.name
,pr.comment1
,pr.comment2
,pr.comment3
,pr.comment4
,pr.comment5
,pr.comment6
,pr.comment7
,pr.comment8
,pr.comment9
,pr.comment10
,pr.comment11
,pr.comment12
,pr.comment13
,pr.comment14
,pr.comment15
,pr.comment16
,pr.comment17
,pr.comment18
,pr.comment19
,pr.comment20
,pr.comment21
,pr.comment22
,pr.comment23
,pr.comment24
,pr.comment25
,pr.update_date
,pr.main_list_comment
,pr.main_image
,pr.main_list_image
,pr.product_flag
,pr.deliv_date_id
,pr.sale_limit
,pr.point_rate
,pr.sale_unlimited
,pr.create_date
,pr.deliv_fee
,pc.rank
,cc.rank AS category_rank
,cc.category_id
FROM
(((SELECT
product_id as product_id_sub
,MIN(product_code) AS product_code_min
,MAX(product_code) AS product_code_max
,MIN(price01) AS price01_min
,MAX(price01) AS price01_max
,MIN(price02) AS price02_min
,MAX(price02) AS price02_max
,MIN(stock) AS stock_min
,MAX(stock) AS stock_max
,MIN(stock_unlimited) AS stock_unlimited_min
,MAX(stock_unlimited) AS stock_unlimited_max
FROM dtb_products_class GROUP BY product_id
) AS pl
LEFT JOIN dtb_products AS pr ON pl.product_id_sub = pr.product_id) LEFT JOIN dtb_product_categories AS pc ON pr.product_id = pc.product_id) LEFT JOIN dtb_category AS cc ON pc.category_id = cc.category_id) AS allcls WHERE del_flg = 0 AND status = 1 AND category_id IN ( 416 ) [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS pl
LEFT JOIN dtb_products AS pr ON pl.product_id_sub = p' at line 70]


----------------
EC-CUBEバージョン 2.1.2
PHPバージョン PHP 4.3.9
DBバージョン MySQL 4.1.20

seasoft
投稿日時: 2009/3/26 0:57
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: MySQL での一覧商品表示の速度向上について
エラーとなっているSQL文ですが、MySQL 5.0系の環境では正常実行できました。(追加カラム分は削除しています。)

とりあえずご報告まで。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

lucky7
投稿日時: 2009/3/26 1:22
対応状況: −−−
一人前
登録日: 2008/6/2
居住地: 東京近郊
投稿: 101
Re: MySQL での一覧商品表示の速度向上について
と、言う事はMySQLのバージョン差によるエラーの可能性が高いと言うことでしょうか?


----------------
EC-CUBEバージョン 2.1.2
PHPバージョン PHP 4.3.9
DBバージョン MySQL 4.1.20

seasoft
投稿日時: 2009/3/26 1:27
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: MySQL での一覧商品表示の速度向上について
私はMySQL固有の仕様は深く把握していないので、確率の大小は評価できませんが、少なくとも無関係と断言できる情報は持っていません。

EC-CUBE 抜きで、SQL 文を実行できれば、話しは早いのですが。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

seasoft
投稿日時: 2009/3/26 2:04
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: MySQL での一覧商品表示の速度向上について
引用:
先ほど Ver 2.4 系でも高速化のロジックが実装されたようなので、何か参考になる部分があるかも。
http://svn.ec-cube.net/open_trac/changeset/17925


あっ・・・ 差し戻されました。
http://svn.ec-cube.net/open_trac/changeset/17930


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

miruku
投稿日時: 2009/3/26 11:21
対応状況: −−−
新米
登録日: 2009/3/9
居住地:
投稿: 6
Re: MySQL での一覧商品表示の速度向上について
こんにちは。

私も同様にログを見るとDB Error: syntax error になっていました。
見た目には「システムエラーが発生しました」の画面が表示されて動作しませんでした。

トップページに「おすすめ商品」のブロックをレイアウトしていますが、ブロック部分に「システムエラーが発生しました」の画面が表示されます。

商品のカテゴリーをクリックすると、「システムエラーが発生しました」の画面になります。

lucky7さん同様、SQLのバージョンの問題でしょうか?

EC-CUBEバージョン 2.2.0-beta
PHPバージョン PHP 4.4.9
DBバージョン MySQL 4.1.22
seasoft
投稿日時: 2009/3/26 13:02
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: MySQL での一覧商品表示の速度向上について
同様に MySQL 4 環境ですね。そうなると、バージョン依存の確率は高まりますね。

もしや、JOIN が相関と見なされているとか・・・
<ぼそ>MySQL 嫌い</ぼそ>

WHERE で書き換えれば対応できそうです。パフォーマンス面で不安がありますが・・・^^;


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

hakaselab
投稿日時: 2009/3/26 14:23
対応状況: −−−
半人前
登録日: 2008/9/4
居住地: 広島
投稿: 28
Re: MySQL での一覧商品表示の速度向上について
お世話になっております。高橋@株式会社システムフレンド

miruku さんも試していただいたみたいで、ありがとうございます。

AS pl LEFT JOIN dtb_products ...
で AS pl と LEFT の部分が、空白がないようにも思えるのですが、んータブなので、掲示板にはっつけたときにおちてるだけでしょうか。
ちょっと AS pl と LEFT の部分を改行ではなく、スペースでやってみてもらってもいいですか?

すいませんが、 MySQL 4.x については今ためす環境がないので実行できません。ごめんなさい。


----------------
-------------------------------
株式会社システムフレンド
高橋純一

EC-CUBE工房
http://ec-cube.systemfriend.co.jp/
-------------------------------

seasoft
投稿日時: 2009/3/26 14:52
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: MySQL での一覧商品表示の速度向上について
引用:
AS pl LEFT JOIN dtb_products ...
で AS pl と LEFT の部分が、空白がないようにも思えるのですが、んータブなので、掲示板にはっつけたときにおちてるだけでしょうか。

改行が入っており、エラー文上も正しく改行と認識されているようなので、問題ないとは思いますよ。
少なくとも、MySQL 5 では大丈夫でした。

「MySQL 4 は改行を認識できない」といった、特殊事情がある確率を否定することはできませんが・・・


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

« 1 (2) 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,805名です
総投稿数は109,972件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1644
8
red
1570
9
mcontact
1289
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.