마 젠토에는 가격 관리를위한 많은 테이블이 있습니다
그것은 나에게 보인다 :
- 제품 / 카테고리 페이지에서 제품 가격은 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 개의 웹 사이트 (웹 사이트로 설정된 가격 속성 범위)
- 10 개 고객 그룹
=> 100.000 * 2 * 10 = 2.000.000 행
다른 고객 그룹에 대해 다른 가격을 사용하지 않으면 DB에 많은 공간이 낭비되고 가격 재 색인은 매우 느려집니다. (기본적으로 각 제품에 대해 20 개의 행이 모두 동일한 값을 포함하므로)
질문 :
- 위의 모든 빈 테이블을 삭제하는 것이 안전합니까?
- 왜 데이터가있는 catalog_product_index_price 테이블이 3 개인데 실제로 1 개만 사용됩니까?
최적화 :
- 제품 가격이 모든 조합에 대해 모두 동일한 경우 인덱스 테이블의 행 수를 줄일 수 있습니까?
1
모든 테이블에 대해 대답 할 수는 없지만 catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x 및 catalog_product_index_price_downlod_x와 같은 일부 사이트에는 번들, 구성 가능 및 다운로드 가능한 제품이있는 경우에만 데이터가 있습니다. 나머지는 2 차 통화 등으로 최종 가격을 저장하는 데 사용될 수 있지만 긍정적이지 않습니다.
—
Eirik