Magento 1.9: Tabelle dei prezzi dei prodotti: come funzionano?


9

Magento ha molti tavoli per la gestione dei prezzi

Mi sembra che:

  • nelle pagine dei prodotti / categorie i prezzi dei prodotti vengono caricati dalle tabelle catalog_product_flat .
  • nelle pagine di ricerca viene utilizzata la tabella _idx (penso per il filtro della fascia di prezzo).

Tabella con dati

| Tabella | Note |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price | ha dati - tabella principale |
| catalog_product_index_price_idx | ha dati |
| catalog_product_index_price_tmp | ha dati |

Tabella senza dati

| Tabella | Note |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price_bundle_idx | nessun dato |
| catalog_product_index_price_bundle_opt_idx | nessun dato |
| catalog_product_index_price_bundle_opt_tmp | nessun dato |
| catalog_product_index_price_bundle_sel_idx | nessun dato |
| catalog_product_index_price_bundle_sel_tmp | nessun dato |
| catalog_product_index_price_bundle_tmp | nessun dato |
| catalog_product_index_price_cfg_opt_agr_idx | nessun dato |
| catalog_product_index_price_cfg_opt_agr_tmp | nessun dato |
| catalog_product_index_price_cfg_opt_idx | nessun dato |
| catalog_product_index_price_cfg_opt_tmp | nessun dato |
| catalog_product_index_price_downlod_idx | nessun dato |
| catalog_product_index_price_downlod_tmp | nessun dato |
| catalog_product_index_price_final_idx | nessun dato |
| catalog_product_index_price_final_tmp | nessun dato |
| catalog_product_index_price_opt_agr_idx | nessun dato |
| catalog_product_index_price_opt_agr_tmp | nessun dato |
| catalog_product_index_price_opt_idx | nessun dato |
| catalog_product_index_price_opt_tmp | nessun dato |

Quindi sembra che ci siano solo 3 tabelle con dati:

  • catalog_product_index_price
  • catalog_product_index_price_idx
  • catalog_product_index_price_tmp

L'unica tabella effettivamente utilizzata è catalog_product_index_price , la navigazione a livelli lo utilizza per filtrare i prodotti in base al prezzo. (vedi Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )

Tabelle: catalog_product_index_price

| entity_id | customer_group_id | website_id | tax_class_id | prezzo | prezzo_prezzo | min_price | prezzo massimo | tier_price | prezzo_gruppo |

Ospita tutte le combinazioni di siti Web / gruppi di clienti. La mia matematica di permutazione non è comunque buona supponiamo di avere:

  • 100.000 prodotti
  • 2 siti Web (un ambito dell'attributo prezzo impostato su Sito Web)
  • 10 gruppi di clienti

=> 100.000 * 2 * 10 = 2.000.000 di righe

Se non usi prezzi diversi per gruppi di clienti diversi, finisci per rinunciare a molto spazio su DB e il reindice dei prezzi sarà molto lento. (Perché praticamente tutte le 20 righe per ogni prodotto conterranno gli stessi valori)

Domande:

  1. È sicuro eliminare tutte le tabelle vuote sopra?
  2. Perché ci sono 3 tabelle catalog_product_index_price con i dati ma solo 1 è effettivamente utilizzato?

Ottimizzazione:

  1. Sarebbe possibile ridurre la quantità di righe nella tabella dell'indice nel caso in cui i prezzi dei prodotti siano tutti uguali per tutte le combinazioni?

1
Per quanto riguarda tutte le tabelle alle quali non posso rispondere, ma alcune come catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x e catalog_product_index_price_downlod_x avranno dati solo se hai prodotti raggruppati, configurabili e scaricabili all'interno del sito. Gli altri potrebbero essere utilizzati per la memorizzazione del prezzo finale con valute secondarie ecc., Ma non sono positivo.
— Eirik,

Risposte:


2

È sicuro * eliminare tutte le tabelle vuote sopra?

Le tabelle vuote verranno popolate quando Magento si reindicizza e il catalogo contiene prodotti per il tipo di prodotto specificato.
Dovrebbe essere sicuro rimuovere la tabella _idx che Magento le ricreerà durante reindex.

Perché ci sono 3 tabelle con dati ma solo 1 viene effettivamente utilizzato?

La tabella idx e la tabella tmp vengono utilizzate solo per l'indicizzazione:

  • _tmp è vuoto e verrà popolato durante reindex
  • _idx è la tabella dell'indice effettiva

scusa la tua risposta non mi sta dicendo niente.
— Fra

Puoi per favore essere più specifico su ciò che non è chiaro?
— Quisse,

So che quelle tabelle sono indici, so che puoi troncare l'indice (stai dicendo che non puoi ma non è vero, devi solo reindicizzare dopo) non stai dicendo nulla di nuovo .... se non hai una risposta alla domanda dovresti pubblicare un commento, non una risposta
— Fra

Scusa se ho provato ad aiutare, hai anche letto la mia risposta? Devi davvero mettere le mie risposte vicino alle tue domande.
— Quisse,

Ora l'ho fatto per te. Spero che possiamo avere un dialogo costruttivo per risolvere la domanda.
— Quisse,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.