В Magento есть много таблиц для управления ценами.
Мне кажется, что:
- на страницах товаров / категорий цены товаров загружаются из таблиц catalog_product_flat .
- на страницах поиска используется таблица _idx (думаю, для фильтра ценового диапазона).
Таблица с данными
| Таблица | Примечания | --------------------------------------------- | --- --------------------- | | catalog_product_index_price | имеет данные - главная таблица | | catalog_product_index_price_idx | имеет данные | | catalog_product_index_price_tmp | имеет данные |
Таблица без данных
| Таблица | Примечания | --------------------------------------------- | --- --------------------- | | catalog_product_index_price_bundle_idx | нет данных | | catalog_product_index_price_bundle_opt_idx | нет данных | | catalog_product_index_price_bundle_opt_tmp | нет данных | | catalog_product_index_price_bundle_sel_idx | нет данных | | catalog_product_index_price_bundle_sel_tmp | нет данных | | catalog_product_index_price_bundle_tmp | нет данных | | catalog_product_index_price_cfg_opt_agr_idx | нет данных | | catalog_product_index_price_cfg_opt_agr_tmp | нет данных | | catalog_product_index_price_cfg_opt_idx | нет данных | | catalog_product_index_price_cfg_opt_tmp | нет данных | | catalog_product_index_price_downlod_idx | нет данных | | catalog_product_index_price_downlod_tmp | нет данных | | catalog_product_index_price_final_idx | нет данных | | catalog_product_index_price_final_tmp | нет данных | | catalog_product_index_price_opt_agr_idx | нет данных | | catalog_product_index_price_opt_agr_tmp | нет данных | | catalog_product_index_price_opt_idx | нет данных | | catalog_product_index_price_opt_tmp | нет данных |
Так что, похоже, есть только 3 таблицы с данными:
- catalog_product_index_price
- catalog_product_index_price_idx
- catalog_product_index_price_tmp
Единственная фактически используемая таблица - catalog_product_index_price , слой навигации использует ее для фильтрации товаров по цене. (см. Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )
Таблицы: catalog_product_index_price
| entity_id | customer_group_id | website_id | tax_class_id | цена | final_price | min_price | max_price | tier_price | цена группы |
Здесь размещаются все комбинации сайтов / групп клиентов. Моя математика перестановок в любом случае не очень хороша, предположим, у вас есть:
- 100.000 товаров
- 2 веб-сайта (для атрибута цены установлено значение «Веб-сайт»)
- 10 групп клиентов
=> 100.000 * 2 * 10 = 2.000.000 строк
Если вы не используете разные цены для разных групп клиентов, вы в итоге тратите много места на БД, и переиндексация цены будет очень медленной. (Потому что в основном все 20 строк для каждого продукта будут содержать одинаковые значения)
Вопросов:
- Это безопасно удалить все вышеупомянутые пустые таблицы?
- Почему есть 3 таблицы catalog_product_index_price с данными, но фактически используется только 1?
Оптимизация:
- Можно было бы уменьшить количество строк в таблице индексов, если цены на продукты одинаковы для всех комбинаций?
Ответы:
Эти пустые таблицы будут заполнены, когда Magento переиндексирует, и в каталоге есть продукты для указанного типа продукта.
Должно быть безопасно удалить таблицу _idx, которую Magento создаст заново во время переиндексации.
Таблицы idx и tmp используются только для индексации:
источник