Magento ma wiele tabel do zarządzania cenami
Wydaje mi się, że:
- na stronach produktu / kategorii ceny produktów są ładowane z tabel katalog_produktu_produktu .
- na stronach wyszukiwania używana jest tabela _idx (myślę o filtrze przedziału cenowego).
Tabela z danymi
| Tabela | Uwagi | | --------------------------------------------- | --- --------------------- | | katalog_produktu_index_price | ma dane - główna tabela | | katalog_produktu_index_price_idx | ma dane | | katalog_produktu_index_price_tmp | ma dane |
Tabela bez danych
| Tabela | Uwagi | | --------------------------------------------- | --- --------------------- | | katalog_produktu_index_price_bicele_idx | brak danych | | katalog_produktu_index_price_bundle_opt_idx | brak danych | | catalog_product_index_price_bundle_opt_tmp | brak danych | | katalog_produktu_index_price_bicele_sel_idx | brak danych | | catalog_product_index_price_bundle_sel_tmp | brak danych | | katalog_produktu_index_price_bundle_tmp | brak danych | | catalog_product_index_price_cfg_opt_agr_idx | brak danych | | catalog_product_index_price_cfg_opt_agr_tmp | brak danych | | catalog_product_index_price_cfg_opt_idx | brak danych | | catalog_product_index_price_cfg_opt_tmp | brak danych | | catalog_product_index_price_downlod_idx | brak danych | | katalog_produktu_index_price_downlod_tmp | brak danych | | katalog_produktu_index_price_final_idx | brak danych | | katalog_produktu_index_price_final_tmp | brak danych | | katalog_produktu_index_price_opt_agr_idx | brak danych | | katalog_produktu_index_price_opt_agr_tmp | brak danych | | katalog_produktu_index_price_opt_idx | brak danych | | katalog_produktu_index_price_opt_tmp | brak danych |
Wygląda więc na to, że istnieją tylko 3 tabele zawierające dane:
- katalog_produktu_index_price
- katalog_produktu_index_price_idx
- katalog_produktu_index_price_tmp
Jedyną faktycznie używaną tabelą jest katalog_produktu_indeks_ cena , nawigacja warstwowa używa jej do filtrowania produktów według ceny. (patrz Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )
Tabele: katalog_produktu_index_price
| identyfikator_jednostki | ID_grupy klientów | identyfikator strony | identyfikator_klasy | cena | cena_końcowa | cena_min. | cena maksymalna | tier_price | cena_grupy |
Obsługuje wszystkie kombinacje stron internetowych / grup klientów. Moja matematyka permutacyjna i tak nie jest zbyt dobra, zakładając, że masz:
- 100.000 produktów
- 2 witryny (zakres atrybutu ceny ustawiony na Witryna)
- 10 grup klientów
=> 100 000 * 2 * 10 = 2 000 000 wierszy
Jeśli nie użyjesz różnych cen dla różnych grup klientów, w końcu będziesz tracić dużo miejsca na DB, a reindeks cen będzie bardzo wolny. (Ponieważ w zasadzie wszystkie 20 wierszy dla każdego produktu będzie zawierać te same wartości)
Pytania:
- Czy bezpiecznie jest usunąć wszystkie powyższe puste tabele?
- Dlaczego istnieją 3 tabele cena_katalogowa_indeks_produktu z danymi, ale faktycznie tylko 1 jest używana?
Optymalizacja:
- Czy można by zmniejszyć liczbę wierszy w tabeli indeksu, gdyby ceny produktów były takie same dla wszystkich kombinacji?