TAMURA Toshihiko
tamur****@bitsc*****
2003年 1月 29日 (水) 22:28:32 JST
こんばんは、田村です。 永田さん: >と言いますのも、specialsテーブルの中のproducts_idにはインデックスが無いので >すが、これにインデックスを作成してあげると、ページの表示速度(?)が上がるこ >とに気が付きました。 最初読んだときには、 specials テーブルの products_id にインデックスをつけて速くなる? とピンとこなかったんですが、 ここで実際に実行されるSQLは、下のように結構複雑なんですね。 select p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from products p, products_description pd, specials s, categories c, products_to_categories p2c where p.products_status = '1' and p.products_id = s.products_id and pd.products_id = s.products_id and pd.language_id = '4' and s.status = '1' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and c.status = '1' order by s.specials_date_added DESC limit 10 伊豆さん: > 通常インデックスを付ける場合、気にしなくてはいけないのは、insertやupdateが多い > テーブルに対しては慎重にならなくてはいけないと言うことです。 > selectが早くなっても、全体では遅くなることが多いので。 > osCommereceの場合、orders系のテーブルに対しては慎重にいかなくてはだめなような > 気がします。 そうですね。 MySQLは、レコード数が少なければ、 案外インデックスが無い方が速い場合があるなどとも言われてますが、 osCommerceはかなり複雑なSQLが多いので、 実験してみないと分からないような気がしてきました。 こんな例を見ると、まだ改善の余地があるのかもしれませんね。 -- 田村敏彦 / 株式会社ビットスコープ E-mail:tamur****@bitsc***** http://www.bitscope.co.jp/