Magento verfügt über viele Tabellen zur Preisverwaltung
Es sieht für mich so aus:
- Auf Produkt- / Kategorieseiten werden die Produktpreise aus den Tabellen catalog_product_flat geladen .
- In Suchseiten wird die _idx-Tabelle verwendet (ich denke für Preisspannenfilter).
Tabelle mit Daten
| Tabelle | Anmerkungen | | ----------------------------------------- | --- --------------------- | | catalog_product_index_price | hat Daten - Haupttabelle | | catalog_product_index_price_idx | hat Daten | | catalog_product_index_price_tmp | hat Daten |
Tabelle ohne Daten
| Tabelle | Anmerkungen | | ----------------------------------------- | --- --------------------- | | catalog_product_index_price_bundle_idx | keine Daten | | catalog_product_index_price_bundle_opt_idx | keine Daten | | catalog_product_index_price_bundle_opt_tmp | keine Daten | | catalog_product_index_price_bundle_sel_idx | keine Daten | | catalog_product_index_price_bundle_sel_tmp | keine Daten | | catalog_product_index_price_bundle_tmp | keine Daten | | catalog_product_index_price_cfg_opt_agr_idx | keine Daten | | catalog_product_index_price_cfg_opt_agr_tmp | keine Daten | | catalog_product_index_price_cfg_opt_idx | keine Daten | | catalog_product_index_price_cfg_opt_tmp | keine Daten | | catalog_product_index_price_downlod_idx | keine Daten | | catalog_product_index_price_downlod_tmp | keine Daten | | catalog_product_index_price_final_idx | keine Daten | | catalog_product_index_price_final_tmp | keine Daten | | catalog_product_index_price_opt_agr_idx | keine Daten | | catalog_product_index_price_opt_agr_tmp | keine Daten | | catalog_product_index_price_opt_idx | keine Daten | | catalog_product_index_price_opt_tmp | keine Daten |
Es sieht also so aus, als gäbe es nur 3 Tabellen mit Daten:
- catalog_product_index_price
- catalog_product_index_price_idx
- catalog_product_index_price_tmp
Die einzige tatsächlich verwendete Tabelle ist catalog_product_index_price. Die Layernavigation verwendet sie, um die Produkte nach Preis zu filtern. (siehe Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )
Tabellen: catalog_product_index_price
| entity_id | customer_group_id | website_id | tax_class_id | Preis | final_price | min_price | max_price | tier_price | Gruppenpreis |
Es hostet alle Kombinationen von Websites / Kundengruppen. Meine Permutationsmathematik ist sowieso nicht sehr gut. Angenommen, Sie haben:
- 100.000 Produkte
- 2 Websites (ein auf Website festgelegter Preisattributbereich)
- 10 Kundengruppen
=> 100.000 * 2 * 10 = 2.000.000 Zeilen
Wenn Sie nicht unterschiedliche Preise für unterschiedliche Kundengruppen verwenden, verlieren Sie am Ende viel Platz in der DB, und die Preisumstellung wird sehr langsam sein. (Da grundsätzlich alle 20 Zeilen für jedes Produkt die gleichen Werte enthalten)
Fragen:
- Es ist sicher, alle oben genannten leeren Tabellen zu löschen?
- Warum gibt es 3 Tabellen catalog_product_index_price mit Daten, aber nur 1 wird tatsächlich verwendet?
Optimierung:
- Es wäre möglich, die Anzahl der Zeilen in der Indextabelle zu reduzieren, wenn die Produktpreise für alle Kombinationen gleich sind.