Magento 1.9:製品価格表-どのように機能しますか?


9

Magentoには価格を管理するための多くのテーブルがあります

それは私に見えます:

  • 製品/カテゴリページでは、製品価格がcatalog_product_flatテーブルから読み込まれます。
  • 検索ページでは_idxテーブルが使用されます(価格帯フィルターの場合)

データのあるテーブル

| テーブル| 注意事項|
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price | データあり-メインテーブル|
| catalog_product_index_price_idx | データあり|
| catalog_product_index_price_tmp | データあり|

データのないテーブル

| テーブル| 注意事項|
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price_bundle_idx | データなし|
| catalog_product_index_price_bundle_opt_idx | データなし|
| catalog_product_index_price_bundle_opt_tmp | データなし|
| catalog_product_index_price_bundle_sel_idx | データなし|
| catalog_product_index_price_bundle_sel_tmp | データなし|
| catalog_product_index_price_bundle_tmp | データなし|
| catalog_product_index_price_cfg_opt_agr_idx | データなし|
| catalog_product_index_price_cfg_opt_agr_tmp | データなし|
| catalog_product_index_price_cfg_opt_idx | データなし|
| catalog_product_index_price_cfg_opt_tmp | データなし|
| catalog_product_index_price_downlod_idx | データなし|
| catalog_product_index_price_downlod_tmp | データなし|
| catalog_product_index_price_final_idx | データなし|
| catalog_product_index_price_final_tmp | データなし|
| catalog_product_index_price_opt_agr_idx | データなし|
| catalog_product_index_price_opt_agr_tmp | データなし|
| catalog_product_index_price_opt_idx | データなし|
| catalog_product_index_price_opt_tmp | データなし|

したがって、データがあるテーブルは3つしかないようです。

  • catalog_product_index_price
  • catalog_product_index_price_idx
  • catalog_product_index_price_tmp

実際に使用される唯一のテーブルはcatalog_product_index_priceで、レイヤーナビゲーションはそれを使用して価格で製品をフィルターします。(Mage_Catalog_Model_Resource_Layer_Filter_Price-> _ getPriceExpression()を参照)

テーブル:catalog_product_index_price

| entity_id | customer_group_id | website_id | tax_class_id | 価格| final_price | min_price | max_price | tier_price | group_price |

それはウェブサイト/顧客グループのすべての組み合わせをホストしています私の順列計算はとにかくあなたが持っていると仮定すると非常によくありません:

  • 100.000製品
  • 2つのWebサイト(価格属性のスコープはWebsiteに設定されています)
  • 10の顧客グループ

=> 100.000 * 2 * 10 = 2.000.000行

顧客グループごとに異なる価格を使用しないと、DBの多くのスペースが無駄になり、価格の再インデックスは非常に遅くなります。(基本的に、各製品の20行すべてに同じ値が含まれるため)

質問:

  1. 上記の空のテーブルをすべて削除しても安全ですか?
  2. データが含まれている3つのテーブルcatalog_product_index_priceがあるのに、実際に使用されているのは1つだけなのはなぜですか。

最適化:

  1. すべての組み合わせで商品の価格がすべて同じである場合、インデックステーブルの行数を減らすことができますか?

1
すべてのテーブルについて答えることはできませんが、catalog_product_index_price_bundle_x、catalog_product_index_price_cfg_x、catalog_product_index_price_downlod_xなどの一部は、サイト内にバンドルされた構成可能でダウンロード可能な製品がある場合にのみデータを持ちます。他のものは二次通貨などで最終価格を保存するために利用されるかもしれませんが、その上で私は前向きではありません。
Eirik 2017年

回答:


2

上記の空のテーブルをすべて削除しても安全です*?

これらの空のテーブルは、Magentoがインデックスを再作成し、カタログに指定された製品タイプの製品が含まれている場合に入力されます。
Magentoが再インデックス中にそれらを再作成する_idxテーブルを削除しても安全です。

データが含まれているテーブルが3つあるのに、実際に使用されているのは1つだけなのはなぜですか。

idxテーブルとtmpテーブルは、インデックス作成にのみ使用されます。

  • _tmpは空であり、再インデックス中に入力されます
  • _idxは実際のインデックステーブルです

申し訳ありませんが、私に何も言われていません。
Fra

不明な点について具体的に説明していただけますか?
2017

私はそれらのテーブルがインデックスであることを知っています、あなたはインデックスを切り捨てることができることを知っています(あなたはそうすることができないと言っていますが、それは本当ではありません、あなたは後に再インデックスする必要があるだけです)あなたは何も新しいことを言っていません....持っていない場合回答ではなくコメントを投稿する必要がある質問への回答
Fra

助けてくれて申し訳ありません、私の答えを読んでもらえますか?私は本当にあなたの質問の隣に私の答えを置く必要があります。
17

今私はあなたのためにそれをしました。この問題を解決するための建設的な対話ができればいいのですが。
17
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.