Magento tiene muchas mesas para administrar precios
Me parece que:
- En las páginas de productos / categorías, los precios de los productos se cargan desde las tablas catalog_product_flat .
- en las páginas de búsqueda se usa la tabla _idx (creo que para el filtro de rango de precios).
Mesa con datos
El | Tabla | Notas | | --------------------------------------------- | --- --------------------- | El | catalog_product_index_price | tiene datos - tabla principal | El | catalog_product_index_price_idx | tiene datos | El | catalog_product_index_price_tmp | tiene datos |
Mesa sin datos
El | Tabla | Notas | | --------------------------------------------- | --- --------------------- | El | catalog_product_index_price_bundle_idx | sin datos | El | catalog_product_index_price_bundle_opt_idx | sin datos | El | catalog_product_index_price_bundle_opt_tmp | sin datos | El | catalog_product_index_price_bundle_sel_idx | sin datos | El | catalog_product_index_price_bundle_sel_tmp | sin datos | El | catalog_product_index_price_bundle_tmp | sin datos | El | catalog_product_index_price_cfg_opt_agr_idx | sin datos | El | catalog_product_index_price_cfg_opt_agr_tmp | sin datos | El | catalog_product_index_price_cfg_opt_idx | sin datos | El | catalog_product_index_price_cfg_opt_tmp | sin datos | El | catalog_product_index_price_downlod_idx | sin datos | El | catalog_product_index_price_downlod_tmp | sin datos | El | catalog_product_index_price_final_idx | sin datos | El | catalog_product_index_price_final_tmp | sin datos | El | catalog_product_index_price_opt_agr_idx | sin datos | El | catalog_product_index_price_opt_agr_tmp | sin datos | El | catalog_product_index_price_opt_idx | sin datos | El | catalog_product_index_price_opt_tmp | sin datos |
Entonces parece que solo hay 3 tablas que tienen datos:
- catalog_product_index_price
- catalog_product_index_price_idx
- catalog_product_index_price_tmp
La única tabla utilizada real es catalog_product_index_price , la navegación por capas la utiliza para filtrar los productos por precio. (ver Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )
Tablas: catalog_product_index_price
El | entidad_id | customer_group_id | website_id | tax_class_id | precio | precio_final | precio_min | max_price | tier_price | precio_grupo |
Aloja todas las combinaciones de sitios web / grupo de clientes Mi matemática de permutación no es muy buena de todos modos, suponga que tiene:
- 100.000 productos
- 2 sitios web (un alcance del atributo de precio establecido en Sitio web)
- 10 grupos de clientes
=> 100,000 * 2 * 10 = 2.000.000 filas
Si no utiliza diferentes precios para diferentes grupos de clientes, terminará renunciando a mucho espacio en DB y el reindex de precios será muy lento. (Porque básicamente las 20 filas para cada producto contendrán los mismos valores)
Preguntas:
- ¿Es seguro eliminar todas las tablas vacías anteriores?
- ¿Por qué hay 3 tablas catalog_product_index_price con datos pero solo se usa 1?
Mejoramiento:
- ¿Sería posible reducir la cantidad de filas en la tabla de índice en caso de que los precios de los productos sean todos iguales para todas las combinaciones?
Respuestas:
Esas tablas vacías se llenarán cuando Magento reindexe y el catálogo tenga productos para el tipo de producto especificado.
Debería ser seguro eliminar la tabla _idx que Magento los volverá a crear durante la reindexación.
La tabla idx y la tabla tmp solo se usan para indexar:
fuente