Magento có nhiều bảng để quản lý giá
Dường như với tôi rằng:
- trong các trang sản phẩm / danh mục, giá sản phẩm được tải từ các bảng catalog_product_flat .
- trong các trang tìm kiếm, bảng _idx được sử dụng (tôi nghĩ cho bộ lọc phạm vi giá).
Bảng với dữ liệu
| Bảng | Ghi chú | | --------------------------------------------- | --- --------------------- | | catalog_product_index_price | có dữ liệu - bảng chính | | catalog_product_index_price_idx | có dữ liệu | | catalog_product_index_price_tmp | có dữ liệu |
Bảng không có dữ liệu
| Bảng | Ghi chú | | --------------------------------------------- | --- --------------------- | | catalog_product_index_price_bundle_idx | không có dữ liệu | | catalog_product_index_price_bundle_opt_idx | không có dữ liệu | | catalog_product_index_price_bundle_opt_tmp | không có dữ liệu | | catalog_product_index_price_bundle_sel_idx | không có dữ liệu | | catalog_product_index_price_bundle_sel_tmp | không có dữ liệu | | catalog_product_index_price_bundle_tmp | không có dữ liệu | | catalog_product_index_price_cfg_opt_agr_idx | không có dữ liệu | | catalog_product_index_price_cfg_opt_agr_tmp | không có dữ liệu | | catalog_product_index_price_cfg_opt_idx | không có dữ liệu | | catalog_product_index_price_cfg_opt_tmp | không có dữ liệu | | catalog_product_index_price_downlod_idx | không có dữ liệu | | catalog_product_index_price_downlod_tmp | không có dữ liệu | | catalog_product_index_price_final_idx | không có dữ liệu | | catalog_product_index_price_final_tmp | không có dữ liệu | | catalog_product_index_price_opt_agr_idx | không có dữ liệu | | catalog_product_index_price_opt_agr_tmp | không có dữ liệu | | catalog_product_index_price_opt_idx | không có dữ liệu | | catalog_product_index_price_opt_tmp | không có dữ liệu |
Vì vậy, có vẻ như chỉ có 3 bảng có dữ liệu:
- catalog_product_index_price
- catalog_product_index_price_idx
- catalog_product_index_price_tmp
Bảng được sử dụng thực tế duy nhất là catalog_product_index_price , điều hướng lớp sử dụng nó để lọc các sản phẩm theo giá. (xem Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getpriceExpression () )
Bảng: catalog_product_index_price
| thực thể | khách hàng_group_id | website_id | tax_group_id | giá | Final_price | tối thiểu | tối đa | tier_price | nhóm_price |
Nó lưu trữ tất cả các kết hợp của các trang web / nhóm khách hàng Toán học hoán vị của tôi dù sao cũng không tốt lắm, giả sử bạn có:
- 100.000 sản phẩm
- 2 trang web (phạm vi thuộc tính giá được đặt thành Trang web)
- 10 nhóm khách hàng
=> 100.000 * 2 * 10 = 2.000.000 hàng
Nếu bạn không sử dụng các mức giá khác nhau cho các nhóm khách hàng khác nhau, thì cuối cùng bạn sẽ có rất nhiều không gian trên DB và reindex giá sẽ rất chậm. (Vì về cơ bản, tất cả 20 hàng cho mỗi sản phẩm sẽ chứa cùng một giá trị)
Câu hỏi:
- Có an toàn để xóa tất cả các bảng trống ở trên?
- Tại sao có 3 bảng catalog_product_index_price có dữ liệu nhưng chỉ có 1 bảng thực sự được sử dụng?
Tối ưu hóa:
- Có thể giảm số lượng hàng trong bảng chỉ mục trong trường hợp giá sản phẩm hoàn toàn giống nhau cho tất cả các kết hợp?