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.