wordpress网站sql优化排查

我用的WordPress网站是果核的主题,之前偷瞄群里其他站点的性能数据,发现人家的SQL查询次数基本都是个位数,而我的却经常一百多次,今天看是94次。我之前没太当回事,今天好奇问了下AI,才知道SQL查询次数应该尽量低,优秀的网站查询次数在个位数甚至0。AI给的方案主要是用缓存、清理数据库垃圾。这两招我都试过了呀,装的是果子的wp-opt插件,优化数据库和缓存的功能都有,按理说不应该啊。

没办法,只能一点点排查。从AI那里知道了一个工具——Query Monitor插件,可以分析很多内容,我主要用它来看数据库查询次数。插件商店直接搜就能安装。装上后遇到的第一个问题是:后台能正常显示顶部工具栏,但前台看不到。应该是果子的主题给隐藏掉了。还是AI给的方案管用,最后我选择在主题的functions.php文件里加上这段代码:

// 强制显示管理员工具栏
add_filter('show_admin_bar', '__return_true');

保存后刷新前台,工具栏就出来了,SQL查询次数也显示出来了。我把查询数据喂给AI分析,它告诉我说是查询了所有文章的收藏次数和阅读量导致的。

最大的“元凶”是函数:sotms_get_post_favorite_count(统计文章收藏数的)。问题现象是:日志里从第4条到第94条全是这个函数,它在循环查询wp2_usermeta表,统计每篇文章(比如ID 5085、5081、5078……)分别被多少人收藏了。这就是经典的“N+1查询问题”——你的主题在文章列表页(或侧边栏)显示了“收藏数”,假设一页显示20篇文章,它就会执行20次几乎一样的SQL查询,只是文章ID不同。更致命的是,它用了LIKE '%\"5085\"%'这种模糊匹配去查meta_value字段,这种写法用不上数据库索引,数据量一多就能把数据库拖垮。

知道了原因,就有了方向。

  1. 先换主题试试,查询次数直接降到14次,说明确实是原主题的问题。
  2. 然后修改原主题的个性化设置,同时观察前台SQL查询次数的变化,发现没变化,稳定在94次。
  3. 接着逐个排查前台正文和小组件,一项一项排除,最终还是找到了元凶——“热门文章”小组件。它会查询每篇文章的收藏次数,然后排序显示前5篇。这和AI分析的原因基本一致。

果断删掉热门文章小组件,SQL查询次数立刻降到了10次,偶尔还能到6次,问题解决。

最后记得去functions.php文件里删掉那段强制显示工具栏的代码,然后停用并删除Query Monitor插件,大功告成!

craved 管理员

1篇 本周更新
8篇 本月更新
1个 用户数量

站点性能

运行正常
实时心跳0 ms
页面加载
0
SQL 查询
0
服务端响应
0 ms
峰值内存
0 MB
00 : 00 : 00
2026624星期三
目录