后台标签页显示 2148 个标签,每页 20 条也要查 8 秒,搜索框输入一个字转 3 秒,编辑文章时标签自动补全直接卡住。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
SELECT COUNT(*) FROM wp_terms t JOIN wp_term_taxonomy tt USING (term_id) WHERE tt.taxonomy = 'post_tag';
标签列表和自动补全都按名称模糊查整张 term 表,数量上来后没有合适索引,每次还要重算计数。页面里每个标签都渲染编辑和删除链接,节点太多也拖慢渲染。这一点先确认清楚,后面就不用反复试。
「标签过多管理」这类改动最怕改一半,回滚脚本先准备好,再动生产。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
具体做法是,先合并同义标签 把两千降到三五百;给名称列补索引 或者单独建一张只读索引表;关掉编辑页的自动补全 改成手动输入加校验。
改完照着核一遍,后台标签列表 1 秒内打开,搜索框输入不再转圈。
