Надо ли переделывать магазин?
Попался самописный магазин одежды, простая схема (см.скрин):
один товар в одной категории,
цена и остатки хранятся в таблице product_offers в зависимости от цвета и размеров,
названия цвета в таблице product_colors,
названия размеров в таблице product_sizes,
картинки хранятся с привязкой к цвету,
привязка характеристик в таблице product_props_set,
названия характеристик в таблице product_props.
Товары импортируются от нескольких поставщиков, на сегодня в таблице products 18 млн строк.
Сначала появилось торможение при подсчете количества товаров (используется для разных наборов фильтрации и для формирования пагинации), индексы на все комбинации запросов созданы.
Было обнаружено, что долго, до 6 секунд, происходил банальный COUNT(*).
Пришлось добавить таблицу count_items, несколько полей для разных видов счетчиков (количество в категориях,количество по цветам и так далее), обновляется при каждом добавлении-удалении товара.
Скорость отдачи товаров все равно явно меньше, чем при старте деятельности магазина))).
Проанализировав состав таблицы products, заметил, что большинство товаров имеют в среднем по 6 цветов, занимая 6 строк в таблице products, сами товары при этом почти не отличаются, кроме разных картинок для разных цветов. Т.е. по факту разных товаров в базе данных - не 18 млн, а 18/6 = 3млн.
Вопрос: - имеет ли смысл переделать модель хранения товаров?
