WordPress网站的极端CPU使用率,由于缓慢的查询

ltskdhd1  于 2023-02-03  发布在  WordPress
关注(0)|答案(2)|浏览(78)

我在一个网站上工作,我与先进的自定义领域和woocommerce工作。我有1800个产品,可以创建和编辑的成员(当然每个成员只能编辑他们自己的产品)由于每个产品有大约40个自定义字段,数据库正在快速增长,使用插件“查询监视器”,我发现我运行的查询获得这些产品真的很慢(0,06 - 0,08)。我如何优化这个?我使用Redis和OPCache,但是网站很多时间都无法访问。
这是我正在运行的查询之一:

SELECT wp_posts.ID
FROM wp_posts
INNER JOIN wp_postmeta
ON ( wp_posts.ID = wp_postmeta.post_id )
INNER JOIN wp_postmeta AS mt1
ON ( wp_posts.ID = mt1.post_id )
WHERE 1=1
AND wp_posts.post_author NOT IN (1)
AND ( wp_postmeta.meta_key = 'order_cal'
AND ( ( ( mt1.meta_key = '_product_sub'
AND mt1.meta_value NOT IN ('') ) ) ) )
AND wp_posts.post_type = 'product'
AND ((wp_posts.post_status = 'publish'))
GROUP BY wp_posts.ID
ORDER BY wp_postmeta.meta_value DESC

我听说你可以用索引优化你的表,但是找不到一个像样的教程来帮助我的具体情况。
提前感谢,欢迎所有的帮助:)

holgip5t

holgip5t1#

对于wp_postmeta

INDEX(post_id, meta_key)

更多详情请参见:http://mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta

eoigrqb6

eoigrqb62#

您需要在SQL中创建和索引,请检查以下索引并在添加这些索引后运行查询。

ALTER TABLE `wp_postmeta` ADD INDEX `wp_postmeta_idx_meta_key_post_id_meta_value` (`meta_key`,`post_id`,`meta_value`);
    ALTER TABLE `wp_posts` ADD INDEX `wp_posts_idx_post_type_post_statu_post_autho` (`post_type`,`post_status`,`post_author`);
    ALTER TABLE `wp_posts` ADD INDEX `wp_posts_idx_post_type_post_statu_id` (`post_type`,`post_status`,`ID`);

相关问题