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:
- È sicuro eliminare tutte le tabelle vuote sopra?
- Perché ci sono 3 tabelle catalog_product_index_price con i dati ma solo 1 è effettivamente utilizzato?
Ottimizzazione:
- 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?