Magento 1.9: Tableaux des prix des produits - comment ils fonctionnent?

9

Magento a de nombreuses tables pour gérer les prix

Il me semble que:

  • dans les pages produit / catégorie, les prix des produits sont chargés à partir des tables catalog_product_flat .
  • dans les pages de recherche, la table _idx est utilisée (je pense que pour le filtre de fourchette de prix).

Tableau avec données

| Table | Remarques |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price | a des données - tableau principal |
| catalog_product_index_price_idx | a des données |
| catalog_product_index_price_tmp | a des données |

Tableau sans données

| Table | Remarques |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price_bundle_idx | pas de données |
| catalog_product_index_price_bundle_opt_idx | pas de données |
| catalog_product_index_price_bundle_opt_tmp | pas de données |
| catalog_product_index_price_bundle_sel_idx | pas de données |
| catalog_product_index_price_bundle_sel_tmp | pas de données |
| catalog_product_index_price_bundle_tmp | pas de données |
| catalog_product_index_price_cfg_opt_agr_idx | pas de données |
| catalog_product_index_price_cfg_opt_agr_tmp | pas de données |
| catalog_product_index_price_cfg_opt_idx | pas de données |
| catalog_product_index_price_cfg_opt_tmp | pas de données |
| catalog_product_index_price_downlod_idx | pas de données |
| catalog_product_index_price_downlod_tmp | pas de données |
| catalog_product_index_price_final_idx | pas de données |
| catalog_product_index_price_final_tmp | pas de données |
| catalog_product_index_price_opt_agr_idx | pas de données |
| catalog_product_index_price_opt_agr_tmp | pas de données |
| catalog_product_index_price_opt_idx | pas de données |
| catalog_product_index_price_opt_tmp | pas de données |

Il ne semble donc y avoir que 3 tables contenant des données:

  • catalog_product_index_price
  • catalog_product_index_price_idx
  • catalog_product_index_price_tmp

La seule table réellement utilisée est catalog_product_index_price , la navigation par couches l'utilise pour filtrer les produits par prix. (voir Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )

Tables: catalog_product_index_price

| entity_id | customer_group_id | website_id | tax_class_id | prix | prix_final | min_price | max_price | tier_price | group_price |

Il héberge toutes les combinaisons de sites Web / groupe de clients. Mes calculs de permutation ne sont pas très bons de toute façon, supposons que vous ayez:

  • 100.000 produits
  • 2 sites Web (la portée de l'attribut de prix étant définie sur Site Web)
  • 10 groupes de clients

=> 100 000 * 2 * 10 = 2 000 000 lignes

Si vous n'utilisez pas de prix différents pour différents groupes de clients, vous finissez par perdre beaucoup d'espace sur DB et la réindexation des prix sera très lente. (Parce que, fondamentalement, les 20 lignes de chaque produit contiendront les mêmes valeurs)

Des questions:

  1. Est-il sûr de supprimer toutes les tables vides ci-dessus?
  2. Pourquoi il y a 3 table catalog_product_index_price avec des données mais seulement 1 est réellement utilisé?

Optimisation:

  1. Serait-il possible de réduire le nombre de lignes dans le tableau d'index au cas où les prix des produits seraient tous les mêmes pour toutes les combinaisons?
Fra
la source
1
En ce qui concerne tous les tableaux, je ne peux pas répondre, mais certains tels que catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x et catalog_product_index_price_downlod_x n'auront des données que si vous avez des produits groupés, configurables et téléchargeables sur le site. Les autres pourraient être utilisés pour stocker le prix final avec des devises secondaires, etc., mais je ne suis pas positif.
Eirik

Réponses:

2

Est-il sûr * de supprimer toutes les tables vides ci-dessus?

Ces tables vides seront remplies lorsque Magento se réindexera et que le catalogue aura des produits pour le type de produit spécifié.
Il devrait être sûr de supprimer la table _idx que Magento les recréera pendant la réindexation.

Pourquoi il y a 3 tables avec des données mais seulement 1 est réellement utilisé?

La table idx et la table tmp ne sont utilisées que pour l'indexation:

  • _tmp est vide et sera rempli lors de la réindexation
  • _idx est la table d'index réelle
Quisse
la source
désolé, votre réponse ne me dit rien.
partir de
Pouvez-vous être plus précis sur ce qui n'est pas clair?
Quisse
Je sais que ces tables sont index, je sais que vous pouvez tronquer l'index (vous dites que vous ne pouvez pas mais ce n'est pas vrai, vous avez juste besoin de réindexer après) vous ne dites rien de nouveau .... si vous n'avez pas une réponse à la question, vous devez poster un commentaire et non une réponse
Fra
Désolé d'avoir essayé de vous aider, avez-vous même lu ma réponse? Vous devez vraiment placer mes réponses à côté de vos questions.
Quisse
Maintenant, je l'ai fait pour vous. J'espère que nous pourrons avoir un dialogue constructif pour résoudre la question.
Quisse