support@bhost.ru

Помощь

Увеличение производительности osCommerce

В широко распространенном скрипте osCommerce, предназначенном для организации интернет-магазинов, при увеличении каталога товаров до значительного размера могут возникать проблемы, связанные с производительностью. Наиболее узким местом, как правило, являются запросы к базе данных, выполняющиеся долго ввиду ошибочно спроектированной структуры таблиц. Например, такие:

select distinct p.products_id, p.products_image, p.products_tax_class_id, p.products_price from products p left join specials s on p.products_id = s.products_id, products_to_categories p2c, categories c where c.categories_status='1' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and products_status = '1' order by p.products_date_added desc limit 12

select distinct p.products_id, pd.products_name from products p, products_description pd, categories c where p.products_status = '1' and c.categories_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '1' order by p.products_ordered desc, pd.products_name limit 15

Несмотря на то, что они возвращают считанные строки, результат объединения таблиц, перечисленных в запросе, может увеличиваться до миллиона строк. Объединения такого размера сервер MySQL с достаточно большой вероятностью будет записывать на диск во временную таблицу, что приведет к резкому падению производительности. Кроме того, далеко не для всех указанных в запросе полей по умолчанию создаются индексы.

Указанная проблема решается очень просто — нужно лишь добавить недостающие индексы. Это можно сделать вручную или же воспользоваться специальным дополнением к osCommerce.

Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Проверено HostObzor