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行すべてに同じ値が含まれるため)
質問:
- 上記の空のテーブルをすべて削除しても安全ですか?
- データが含まれている3つのテーブルcatalog_product_index_priceがあるのに、実際に使用されているのは1つだけなのはなぜですか。
最適化:
- すべての組み合わせで商品の価格がすべて同じである場合、インデックステーブルの行数を減らすことができますか?
1
すべてのテーブルについて答えることはできませんが、catalog_product_index_price_bundle_x、catalog_product_index_price_cfg_x、catalog_product_index_price_downlod_xなどの一部は、サイト内にバンドルされた構成可能でダウンロード可能な製品がある場合にのみデータを持ちます。他のものは二次通貨などで最終価格を保存するために利用されるかもしれませんが、その上で私は前向きではありません。
—
Eirik 2017年