我陷入了一个问题,Magento 2拥有超过1300万种产品。尽管速度很慢,但我们已经成功上传了1300万种产品,并且可以像建立索引,产品页面和搜索页面一样工作。
等待近2分钟的内存耗尽后,我的前端类别页面现在无法打开,我们尝试分配18GB的内存,但是它卡在了此查询中,并通过了错误的内存耗尽。
SELECT 1 AS status, e.entity_id, e.attribute_set_id, e.type_id,
e.created_at, e.updated_at, e.sku,
cat_index.position AS cat_index_position,
stock_status_index.stock_status AS is_salable
FROM catalog_product_flat_1 AS e
INNER JOIN catalog_category_product_index_store1 AS cat_index
ON cat_index.product_id=e.entity_id
AND cat_index.store_id=1
AND cat_index.category_id='4'
INNER JOIN cataloginventory_stock_status AS stock_status_index
ON e.entity_id = stock_status_index.product_id
AND stock_status_index.website_id = 0
AND stock_status_index.stock_id = 1
WHERE (stock_status_index.stock_status = 1)
任何人都可以建议我如何解决该问题或加快流程,MySQL询问我应该进行哪些体系结构级别更改以使其在前端的类别列表页面上起作用。我知道这是海量数据,但是拥有这么多产品是我们的要求。我们有一个很好的服务器
1200 GB数据存储
我已经启用了平面目录产品和平面目录类别。
答案 0 :(得分:0)
添加这些复合索引:
stock_status_index: (stock_status, website_id, stock_id, product_id)
e: (entity_id) -- unless that is the PRIMARY KEY
cat_index: (product_id, store_id, category_id)
如果这些帮助还不够,请提供EXPLAIN SELECT ...
和SHOW CREATE TABLE
。