php - 由于查询速度慢而导致 CPU 使用率极高的 Wordpress 网站
问题描述
我正在一个使用高级自定义字段和 woocommerce 的网站上工作。我有1800个产品可以由会员创建和编辑(当然每个会员只能编辑自己的产品)。由于每个产品都有大约 40 个自定义字段,因此数据库正在快速增长,并且通过插件“查询监视器”,我发现我运行以获取这些产品的查询非常慢(0,06 - 0,08)。我该如何优化呢?我使用 redis 和 OPCache,但是很长时间无法访问该网站。
这是我正在运行的查询之一:
SELECT wp_posts.ID
FROM wp_posts
INNER JOIN wp_postmeta
ON ( wp6b_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
我听说你可以用索引优化你的表,但在我的具体情况下找不到合适的教程来帮助。
在此先感谢,欢迎所有帮助:)
解决方案
对于wp_postmeta
:
INDEX(post_id, meta_key)
有关更多详细信息,请参见:http: //mysql.rjweb.org/doc.php/index_cookbook_mysql#speeding_up_wp_postmeta
推荐阅读
- authentication - Nuxt Apollo 模块请求授权标头,带有双 'Bearer'
- javascript - 如何将回调函数变成 Promise
- .htaccess - RewriteCond %{REMOTE_ADDR} [IPv4] 阻止捕获 IP 范围?
- php - 当它包含php代码时如何在点击时传递一个img src值
- c# - 如何将 DateTimePicker 下拉菜单设置为仅选择年或月?
- javafx - JavaFX在按下键时将事件处理程序分配给场景
- azure-functions-core-tools - 如何接受语言列表作为来自 HTML 表单的 HTTP 请求?
- mongodb - MongoDB 4.2 的累积 SUM
- excel - 在同一单元格中添加/求和具有分隔符(空格 - 逗号)的不同数字 excel
- python - Python组合:获取类内对象的属性错误