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.