在我们的 Magento 2 商店中,我们获得了相当多的客户记录(大约 800,000)和订单(大约 1,600,000)。我们的销售网格和客户网格页面表现不佳。因此,我决定对 sql 查询进行一些研究,并注意到以下内容。
订单网格上最慢的查询(大约 10 秒)是(没有任何过滤器):
选择 COUNT(DISTINCT main_table.entity_id) 从
sales_order_grid
作为main_table
左连接 ae_ec
AS ec
ON main_table.entity_id = ec.ec_order_id
左连接 amasty_mostviewed_pack_sales_history
ON amasty_mostviewed_pack_sales_history.order_id = main_table.entity_id 左连接 sales_order
AS sales_order_table
ON main_table.entity_id = sales_order_table.entity_id
在客户网格上,内容如下(大约 7 秒):
选择计数(*) 从
customer_grid_flat
作为 main_table
左连接 directory_country_region
AS rct
ON rct.region_id=main_table
。billing_region_id
左连接 directory_country_region_name
AS rnt
ON rnt.region_id=main_table
.billing_region_id
AND rnt.locale='en_US'
左连接 amasty_rewards_rewards
AS amrewards
ON main_table.entity_id = amrewards.customer_id AND amrewards.id IN (
选择最大值(id)
来自 amasty_rewards_rewards
按 customer_id 分组)
我猜这只是为了显示订单总数。另外,我认为不需要额外的连接。它们是由扩展提供商添加的。如果有(好的)方法来禁用网格上的计数,有什么建议吗?加载时间缩短 10 秒对我们来说意义重大。
您使用的是 OpenSource 还是 Adobe Commerce?
如果您使用 Adobe Commerce,您可以存档订单:
https://experienceleague.adobe.com/docs/commerce-admin/stores-sales/order-management/orders/order-archive.html?lang=en
此功能减少了订单网格中的订单数量,并将保持您的网站性能。
不幸的是,此功能在开源版本中不可用。
在这种情况下,可能值得查看第 3 方模块,例如:https://amasty.com/order-archive-for-magento-2.html