У Magento є багато таблиць для управління цінами
Мені здається, що:
- На сторінках товарів / категорій ціни на товари завантажуються з таблиць каталог_продукт_флат .
- на сторінках пошуку використовується таблиця _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
Єдина фактична використовувана таблиця - каталог_продукт_index_price , навігація по шарах використовує її для фільтрації продуктів за ціною. (див. Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )
Таблиці: catalog_product_index_price
| сутність_id | customer_group_id | website_id | tax_class_id | ціна | final_price | мінімальна ціна | максимальна ціна | tier_price | group_price |
Тут розміщені всі комбінації веб-сайтів / групи клієнтів. Моя математика перестановки все одно не дуже гарна, припустимо, у вас є:
- 100.000 товарів
- 2 веб-сайти (ціновий атрибут, встановлений на Веб-сайті)
- 10 груп клієнтів
=> 100.000 * 2 * 10 = 2.000.000 рядків
Якщо ви не використовуєте різні ціни для різних груп клієнтів, у кінцевому підсумку випадає багато місця в БД, і перевстановлення ціни буде дуже повільним. (Тому що в основному всі 20 рядків для кожного продукту будуть містити однакові значення)
Запитання:
- Чи безпечно видалити всі вищезазначені порожні таблиці?
- Чому існують 3 таблиці catalog_product_index_price з даними, але фактично використовується лише 1?
Оптимізація:
- Можна було б зменшити кількість рядків у таблиці індексу, якщо ціни на продукцію однакові для всіх комбінацій?