patch
patch****@x*****
2005年 5月 12日 (木) 15:29:59 JST
丸山@KSM様 はまだ様 田村様 お返事誠にありがとうございます。 1つ忘れていました! 商品は全て特価登録を行なってます。 先ずは、SQLの設定を見直し、SQLにインデックスを追加してみようと思います。 と思った矢先・・・さらにレスポンスの悪い所を発見してしまいました。 新着商品一覧[/shop/catalog/products_new.php]を表示するのも遅くなっていまし た。 また、次ページ[/shop/catalog/products_new.php/page/2]に関してはさらに遅く感 じます。 ところで、 ------------------------------------------------ > # インデックスは作ればいいというわけでもなくて、 > # サーバの状態やレコード数などの状況によります。 ------------------------------------------------ と、ありますが商品数が7000〜15000点を前後する場合 インデックスを作った方が良いのでしょうか? お忙しいところお手数お掛けします。 吉田 > こんにちは、田村です。 > > 吉田さん: > > 商品をある程度登録して行くと > > TOPページが反応するまでに20〜30秒かかるようになってしまいました。 > > ちなみに管理画面の[基本設定]→[最大値]→[新着商品表示数]を0にすると > > 1秒程度で反応し、一瞬で表示されます。 > > トップページの表示が20〜30秒というのは、 > そんなことがあるかなあ? と気になったんですが、 > osCommerceに関してはSQLの確認をしてみるといいですね。 > > 新着商品の表示には次のようなSQLが利用されています。 > ------------------------------------------------------------ > select p.products_id, p.products_image, p.products_tax_class_id, > if(s.status, s.specials_new_products_price, p.products_price) as products_price > from products p left join specials s on p.products_id = s.products_id > where products_status = '1' order by p.products_date_added desc limit 9 > ------------------------------------------------------------ > > ここで products_status にはインデックスが用意されていませんので、 > 次のようなSQLでインデックスを追加して検証すればいいと思います。 > ------------------------------------------------------------ > ALTER TABLE products ADD INDEX idx_products_status (products_status); > ------------------------------------------------------------ > > また、特価商品が非常に多いなら次のインデックス追加も有効かもしれません。 > ------------------------------------------------------------ > ALTER TABLE specials ADD INDEX idx_products_id (products_id); > ------------------------------------------------------------ > > # インデックスは作ればいいというわけでもなくて、 > # サーバの状態やレコード数などの状況によります。 > > ひょっとしたら、サーバのその他のアプリケーションの > メモリ利用状況などの影響を受けていることも考えられます。 > > -- > 田村敏彦 / 株式会社ビットスコープ > E-mail:tamur****@bitsc***** > http://www.bitscope.co.jp/