Magento 1.9: Produktpreistabellen - wie funktionieren sie?


9

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:

  1. Es ist sicher, alle oben genannten leeren Tabellen zu löschen?
  2. Warum gibt es 3 Tabellen catalog_product_index_price mit Daten, aber nur 1 wird tatsächlich verwendet?

Optimierung:

  1. Es wäre möglich, die Anzahl der Zeilen in der Indextabelle zu reduzieren, wenn die Produktpreise für alle Kombinationen gleich sind.

1
Wie für alle Tabellen kann ich nicht antworten, aber einige wie catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x und catalog_product_index_price_downlod_x enthalten nur Daten, wenn Sie Produkte auf der Site gebündelt, konfiguriert und heruntergeladen haben. Die anderen könnten verwendet werden, um den Endpreis mit Sekundärwährungen usw. zu speichern, aber darüber bin ich nicht positiv.
Eirik

Antworten:


2

Es ist sicher *, alle oben genannten leeren Tabellen zu löschen?

Diese leeren Tabellen werden ausgefüllt, wenn Magento neu indiziert und der Katalog Produkte für den angegebenen Produkttyp enthält.
Es sollte sicher sein, die _idx-Tabelle zu entfernen. Magento erstellt sie während der Neuindizierung neu.

Warum gibt es 3 Tabellen mit Daten, aber nur 1 wird tatsächlich verwendet?

Die idx-Tabelle und die tmp-Tabelle werden nur zur Indizierung verwendet:

  • _tmp ist leer und wird während der Neuindizierung ausgefüllt
  • _idx ist die eigentliche Indextabelle

Entschuldigung, Ihre Antwort sagt nur nichts zu mir.
Fra

Können Sie bitte genauer sagen, was nicht klar ist?
Quisse

Ich weiß, dass diese Tabelle ein Index ist. Ich weiß, dass Sie den Index abschneiden können (Sie sagen, Sie können nicht, aber das ist nicht wahr, Sie müssen nur neu indizieren). Sie sagen nichts Neues ... wenn Sie keinen haben eine Antwort auf die Frage Sie sollten einen Kommentar posten, keine Antwort
Fra

Tut mir leid, dass ich versucht habe zu helfen. Hast du meine Antwort überhaupt gelesen? Du musst meine Antworten wirklich neben deine Fragen stellen.
Quisse

Jetzt habe ich es für dich getan. Ich hoffe, wir können einen konstruktiven Dialog führen, um die Frage zu lösen.
Quisse
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.