我遇到了一个问题,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查询我应该做什么架构级别的更改,使其工作在前端的类别列表页面。我知道这是一个巨大的数据,但我们要求拥有这么多产品。我们有一个非常好的服务器
添加这些复合索引:
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
。