Magento 1.9: Tablas de precios de productos: ¿cómo funcionan?

9

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:

  1. ¿Es seguro eliminar todas las tablas vacías anteriores?
  2. ¿Por qué hay 3 tablas catalog_product_index_price con datos pero solo se usa 1?

Mejoramiento:

  1. ¿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?
Fra
fuente
1
En cuanto a todas las tablas que no puedo responder, algunas como catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x y catalog_product_index_price_downlod_x solo tendrán datos si tiene productos agrupados, configurables y descargables dentro del sitio. Los otros podrían utilizarse para almacenar el precio final con monedas secundarias, etc., pero sobre eso no soy positivo.
Eirik

Respuestas:

2

¿Es seguro * eliminar todas las tablas vacías anteriores?

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.

¿Por qué hay 3 tablas con datos pero solo se usa 1?

La tabla idx y la tabla tmp solo se usan para indexar:

  • _tmp está vacío y se completará durante reindexar
  • _idx es la tabla de índice real
Quisse
fuente
lo siento, tu respuesta no me dice nada.
Fra
¿Puedes ser más específico sobre lo que no está claro?
Quisse
Sé que esas tablas son índices, sé que puedes truncar el índice (estás diciendo que no puedes pero eso no es cierto, solo necesitas reindexar después) no estás diciendo nada nuevo ... si no tienes una respuesta a la pregunta debe publicar un comentario, no una respuesta
Fra
Perdón por tratar de ayudar, ¿has leído mi respuesta? Realmente necesitas colocar mis respuestas al lado de tus preguntas.
Quisse
Ahora lo he hecho por ti. Espero que podamos tener un diálogo constructivo para resolver la pregunta.
Quisse