Magento 1.9: Tabel Harga Produk - bagaimana cara kerjanya?

9

Magento memiliki banyak tabel untuk mengelola harga

Menurut saya itu:

  • di halaman produk / kategori harga produk dimuat dari tabel catalog_product_flat .
  • di halaman pencarian tabel _idx digunakan (saya pikir untuk filter kisaran harga).

Tabel dengan data

| Tabel | Catatan |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price | memiliki data - tabel utama |
| catalog_product_index_price_idx | memiliki data |
| catalog_product_index_price_tmp | memiliki data |

Tabel tanpa data

| Tabel | Catatan |
| --------------------------------------------- | --- --------------------- |
| catalog_product_index_price_bundle_idx | tidak ada data |
| catalog_product_index_price_bundle_opt_idx | tidak ada data |
| catalog_product_index_price_bundle_opt_tmp | tidak ada data |
| catalog_product_index_price_bundle_sel_idx | tidak ada data |
| catalog_product_index_price_bundle_sel_tmp | tidak ada data |
| catalog_product_index_price_bundle_tmp | tidak ada data |
| catalog_product_index_price_cfg_opt_agr_idx | tidak ada data |
| catalog_product_index_price_cfg_opt_agr_tmp | tidak ada data |
| catalog_product_index_price_cfg_opt_idx | tidak ada data |
| catalog_product_index_price_cfg_opt_tmp | tidak ada data |
| catalog_product_index_price_downlod_idx | tidak ada data |
| catalog_product_index_price_downlod_tmp | tidak ada data |
| catalog_product_index_price_final_idx | tidak ada data |
| catalog_product_index_price_final_tmp | tidak ada data |
| catalog_product_index_price_opt_agr_idx | tidak ada data |
| catalog_product_index_price_opt_agr_tmp | tidak ada data |
| catalog_product_index_price_opt_idx | tidak ada data |
| catalog_product_index_price_opt_tmp | tidak ada data |

Jadi sepertinya hanya ada 3 tabel yang memiliki data:

  • catalog_product_index_price
  • catalog_product_index_price_idx
  • catalog_product_index_price_tmp

Satu-satunya tabel yang digunakan sebenarnya adalah catalog_product_index_price , lapisan navigasi menggunakannya untuk menyaring produk berdasarkan harga. (lihat Mage_Catalog_Model_Resource_Layer_Filter_Price -> _ getPriceExpression () )

Tabel: catalog_product_index_price

| entitas_id | customer_group_id | situs web_id | tax_class_id | harga | final_harga | min_harga | max_harga | tier_harga | group_price |

Ia meng-host semua kombinasi situs web / grup pelanggan Matematika permutasi saya tidak terlalu bagus, misalkan Anda memiliki:

  • 100.000 produk
  • 2 situs web (ruang lingkup atribut harga diatur ke Situs web)
  • 10 kelompok pelanggan

=> 100.000 * 2 * 10 = 2.000.000 baris

Jika Anda tidak menggunakan harga yang berbeda untuk grup pelanggan yang berbeda, Anda akhirnya memiliki banyak ruang pada DB dan daftar harga akan sangat lambat. (Karena pada dasarnya semua 20 baris untuk setiap produk akan mengandung nilai yang sama)

Pertanyaan:

  1. Aman untuk menghapus semua tabel kosong di atas?
  2. Mengapa ada 3 tabel catalog_product_index_price dengan data tetapi hanya 1 yang benar-benar digunakan?

Optimasi:

  1. Apakah mungkin untuk mengurangi jumlah baris dalam tabel indeks jika harga produk semuanya sama untuk semua kombinasi?
Fra
sumber
1
Adapun semua tabel saya tidak bisa menjawab tetapi beberapa seperti catalog_product_index_price_bundle_x, catalog_product_index_price_cfg_x, dan catalog_product_index_price_downlod_x hanya akan memiliki data jika Anda memiliki bundel, produk yang dapat dikonfigurasi dan dapat diunduh di dalam situs. Yang lain mungkin digunakan untuk menyimpan harga akhir dengan mata uang sekunder dll tetapi saya tidak positif.
Eirik

Jawaban:

2

Aman * menghapus semua tabel kosong di atas?

Tabel kosong itu akan diisi ketika Magento mengindeks ulang dan katalog memiliki produk untuk jenis produk tertentu.
Seharusnya aman untuk menghapus tabel _idx Magento akan membuat ulang mereka selama indeks ulang.

Mengapa ada 3 tabel dengan data tetapi hanya 1 yang benar-benar digunakan?

Tabel idx dan tabel tmp hanya digunakan untuk pengindeksan:

  • _tmp kosong dan akan diisi selama pengindeksan ulang
  • _idx adalah tabel indeks aktual
Quisse
sumber
maaf jawaban Anda tidak mengatakan apa-apa kepada saya.
Fra
Bisakah Anda lebih spesifik tentang yang tidak jelas?
Quisse
Saya tahu tabel itu adalah indeks, saya tahu Anda dapat memotong indeks (Anda mengatakan Anda tidak bisa tetapi itu tidak benar, Anda hanya perlu mengindeks kembali setelah) Anda mengatakan tidak ada yang baru .... jika Anda tidak memiliki jawaban untuk pertanyaan Anda harus memposting komentar bukan jawaban
Fra
Maaf sudah mencoba membantu, sudahkah Anda membaca jawaban saya? Anda benar-benar perlu menempatkan jawaban saya di sebelah pertanyaan Anda.
Quisse
Sekarang saya sudah melakukannya untuk Anda. Saya harap kita dapat memiliki dialog yang konstruktif untuk menyelesaikan pertanyaan.
Quisse