Magento 1.9: Таблиці цін на продукцію - як вони працюють?


9

У 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 рядків для кожного продукту будуть містити однакові значення)

Запитання:

  1. Чи безпечно видалити всі вищезазначені порожні таблиці?
  2. Чому існують 3 таблиці catalog_product_index_price з даними, але фактично використовується лише 1?

Оптимізація:

  1. Можна було б зменшити кількість рядків у таблиці індексу, якщо ціни на продукцію однакові для всіх комбінацій?

1
Що стосується всіх таблиць, на які я не можу відповісти, але деякі такі, як каталог_продукт_index_price_bundle_x, каталог_продукт_index_price_cfg_x та каталог_продукт_index_price_downlod_x, матимуть дані лише у тому випадку, якщо ви маєте в комплекті продукти, що налаштовуються та завантажуються. Інші можуть бути використані для зберігання кінцевої ціни з вторинними валютами тощо, але в цьому я не позитивний.
Ейрік

Відповіді:


2

Це безпечно * видалити всі вищезазначені порожні таблиці?

Ці порожні таблиці будуть заповнені, коли Magento переробляється і в каталозі є продукти для вказаного типу продукту.
Потрібно безпечно видалити таблицю _idx, яку Magento відновить їх під час повторного введення.

Чому є 3 таблиці з даними, але фактично використовується лише 1?

Таблиця idx і таблиця tmp використовуються лише для індексації:

  • _tmp порожній, і він буде заповнений під час повторного введення
  • _idx - фактична таблиця індексів

вибачте, що ваша відповідь мені просто нічого не каже.
Від

Чи можете ви, будь ласка, бути більш конкретними щодо того, що не зрозуміло?
Quisse

Я знаю, що ця таблиця є індексом, я знаю, що ти можеш усікати індекс (ти кажеш, що не можеш, але це неправда, потрібно просто перевстановити після), ти нічого не кажеш .... якщо у тебе немає відповідь на питання , який ви повинні опублікувати не коментує відповідь
від

Вибачте за те, що намагаєтесь допомогти, ви навіть прочитали мою відповідь? Вам дійсно потрібно розмістити мої відповіді поруч із вашими запитаннями.
Quisse

Тепер я зробив це для вас. Сподіваюся, у нас може бути конструктивний діалог для вирішення питання.
Quisse
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.