mysql – 优化WordPress插件中的慢查询“Better WordPress Recent Comments”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 优化WordPress插件中的慢查询“Better WordPress Recent Comments”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2975字,纯文字阅读大概需要5分钟。
内容图文
![mysql – 优化WordPress插件中的慢查询“Better WordPress Recent Comments”](/upload/InfoBanner/zyjiaocheng/904/4c550ff91e744b8c9a2fb5be97aeb0fc.jpg)
我正在针对MySQL优化查询,我的慢查询日志向我显示WordPress插件“Better WordPress Recent Comments”小部件,显示按帖子分组的最近5条最近评论,使用1.26秒查询数据库,这是一个很长的时间一个网站 – 特别是当下一个网站只需点击一下.
这是慢查询:
Query_time:1.265625 Lock_time:0.000000 Rows_sent:6 Rows_examined:288634
SET时间戳= 1443741678;
SELECT wpcoms.*
FROM (
SELECT *,
@num := if(@post_id = comment_post_ID, @num + 1, 1) as row_number,
@post_id := comment_post_ID as cpID
FROM wp_comments
WHERE comment_approved = 1 ORDER BY comment_post_ID DESC,
comment_ID DESC
) as wpcoms
WHERE wpcoms.row_number <= 2
ORDER BY wpcoms.comment_date DESC
LIMIT 6;
检查的行数为288.634,但我的数据库仅包含96.000条评论.这肯定应该可以改进,以便在很短的时间内实际检查一些评论,因为它只显示了最近发表的几条评论.谢谢.
解决方法:
我看到的主要问题之一是内部查询,SELECT *,@ num …因为它导致全表扫描,这将导致MySQL不使用comment_approved索引.
这样做的原因很简单,因为如果查看查询,它实际上是在告诉MySQL选择由帖子ID排序的表中的每一行而没有限制.
mysql> explain SELECT *, @post_id := comment_post_ID as cpID FROM wp_comments WHERE comment_approved = 1 ORDER BY comment_post_ID DESC, comment_ID DESC LIMIT 10;
+----+-------------+-------------+------+---------------------------+------+---------+------+------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+------+---------------------------+------+---------+------+------+-----------------------------+
| 1 | SIMPLE | wp_comments | ALL | comment_approved_date_gmt | NULL | NULL | NULL | 567 | Using where; Using filesort |
+----+-------------+-------------+------+---------------------------+------+---------+------+------+-----------------------------+
该问题的另一部分是comment_post_ID的排序
考虑这将使用索引:
mysql> explain SELECT *, @post_id := comment_post_ID as cpID FROM wp_comments WHERE comment_approved = 1 ORDER BY comment_date_gmt DESC LIMIT 10;
+----+-------------+-------------+-------+---------------------------+------------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+-------+---------------------------+------------------+---------+------+------+-------------+
| 1 | SIMPLE | wp_comments | index | comment_approved_date_gmt | comment_date_gmt | 8 | NULL | 10 | Using where |
+----+-------------+-------------+-------+---------------------------+------------------+---------+------+------+-------------+
后一个查询可能会影响您的结果,但效率会更高.
更好的解决方案可能是MySQL查询和PHP过滤的某种组合,以获得所需的结果.
由于这是一个插件,您可以考虑将此作为插件开发人员的一个问题,因为它会导致任何具有大量注释的网站性能不佳.
这个答案绝不是一个解决方案,但希望能指出正确的方向.当涉及到包含大量注释的网站时,需要重新考虑查询和处理的逻辑.
内容总结
以上是互联网集市为您收集整理的mysql – 优化WordPress插件中的慢查询“Better WordPress Recent Comments”全部内容,希望文章能够帮你解决mysql – 优化WordPress插件中的慢查询“Better WordPress Recent Comments”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。