某些产品的保存速度非常慢(30秒)
这是探查器的屏幕截图:
我在mysql中打开慢速查询日志,并找到此查询:
SELECT COUNT( DISTINCT ID )
FROM wpmf_posts p
LEFT JOIN (
SELECT object_id
FROM wpmf_term_relationships
WHERE term_taxonomy_id
IN ( 7 )
) AS exclude_join ON exclude_join.object_id = p.ID
INNER JOIN (
SELECT object_id
FROM wpmf_term_relationships
INNER JOIN wpmf_term_taxonomy
USING ( term_taxonomy_id )
WHERE term_id
IN ( 4246, 4247, 4254, 4257, 4263, 4280, 4290, 4335, 4375, 4397, 4486, 5114 )
) AS include_join ON include_join.object_id = p.ID
WHERE 1 =1
AND p.post_status = 'publish'
AND p.post_type = 'product'
AND exclude_join.object_id IS NULL
LIMIT 0 , 30
返回4799,耗时27秒:
# Time: 190127 8:38:29
# User@Host: lfytcoil_uprdb[lfytcoil_uprdb] @ localhost []
# Query_time: 27.287704 Lock_time: 0.000076 Rows_sent: 1 Rows_examined: 483196982
您知道此查询的目的是什么吗?
这是ID为wpmf_term_taxonomy
的
product_visibility
count
显示
31234
这是一个拥有10717种产品的WooCommerce网站,
我怀疑WooCommerce需要处理的产品太多。
注意:运行delete FROM
wpmf_term_relationships where
term_taxonomy_id = 7
后删除了31234,保存仅需2秒
我的问题:
WooCommerce是否无法处理10717种产品?
是否有某种方法可以改善save
?
例如通过禁用此查询?还是通过缓存结果?或改善数据库结构?或安装一些智能模块?
我注意到对wp_update_term_count
的调用,看来如果我禁用此调用,那么问题将得到解决,这可能会有什么副作用?
答案 0 :(得分:0)
解决方案在本期中得到解释:
https://github.com/woocommerce/woocommerce/issues/14900
您应该替换文件includes/wc-term-functions.php
与此:
答案 1 :(得分:0)
注意:我先前的回答是错误的
我发现您可以通过添加来推迟字数统计
wp_defer_term_counting(true);
在save
操作之前(即在脚本开头)
比
wp_defer_term_counting(false);
在脚本末尾, 也可以使用字词计数