Typecho优化: Mysql添加索引提高查询速度


叙述629 阅25 评

我使用的数据库是mysql5.7版本,typecho创建后可以通过以下sql语句执行达到提高查询效果,执行前需快照或者备份数据库以防重要数据丢失!还有nginx与php都可以继续优化,目前我的站点除了CDN字体加载有延迟完,几乎秒开。

屏幕截图2026-03-27

1、内容表添加复合索引

ALTER TABLE `typecho_contents`  ADD INDEX `idx_type_status_created` (`type`, `status`, `created`);

2、删除默认的created 单列索引

ALTER TABLE `typecho_contents` DROP INDEX `created`;

3、评论表添加复合索引

ALTER TABLE `typecho_comments`  ADD INDEX `idx_cid_status_created` (`cid`, `status`, `created`);

4、删除单列索引

ALTER TABLE `typecho_comments` DROP INDEX `cid`;
ALTER TABLE `typecho_comments` DROP INDEX `created`;

5、用于文章与分类的关联查询

ALTER TABLE `typecho_relationships` ADD INDEX `idx_mid_cid` (`mid`, `cid`);

6、用于分类/标签的排序显示

ALTER TABLE `typecho_metas`  ADD INDEX `idx_type_order` (`type`, `order`);

完成以上三个步骤,大部分都覆盖了。

-- 查看的索引
SHOW INDEX FROM `typecho_contents`;

SHOW INDEX FROM `typecho_comments`;

SHOW INDEX FROM `typecho_relationships`;
SHOW INDEX FROM `typecho_metas`;

最后可以查看索引使用频率,看是否生效成功,总结:一个简单的联合索引就能提高很多很多速度,在我的工作中也是如此,若查询得慢,就会使用这样子的方法。

SELECT * FROM sys.schema_index_statistics 
WHERE table_schema = '数据库名称'
  AND table_name LIKE 'typecho_%'
ORDER BY rows_selected DESC;

查询出索引的索引情况,还可以把检测结果给ai,让他进一步提出优化意见。

OPTIMIZE TABLE `typecho_contents`;
OPTIMIZE TABLE `typecho_comments`;

还可以执行上面的命令,每月一次的表优化,恭喜你,完成了Typecho数据库的核心优化。

最后更新 2026-03-28
评论 ( 25 )
  1. 涉及数据库操作,风险很大呀

    2026-03-30 14:51 回复
    1. 云心怀鹤 博主
      @老何

      索引问题不大,查询速度快慢,不涉及底层的表架构改变。

      2026-03-30 22:02 回复
  2. 速度起飞!

    2026-03-30 12:34 回复
    1. 云心怀鹤 博主
      @粽叶加米

      没错,舒服的很

      2026-03-30 22:02 回复
  3. 林羽凡

    页面感觉和纯html差不多快了

    2026-03-29 15:46 回复
    1. 云心怀鹤 博主
      @林羽凡

      对比两年前真的加载不出来,现在网络好,又有ai优化,又有cdn

      2026-03-29 17:52 回复
  4. 一叶竹

    非常快!可惜这主题没更新了,都用好多年了没找到其他合适的。

    2026-03-29 04:20 回复
    1. 云心怀鹤 博主
      @一叶竹

      是的,一出就是巅峰,用得很舒服,能一直维护就好了。

      2026-03-29 08:00 回复
  5. Jason

    太强了佬!我也来学习一下

    2026-03-29 01:39 回复
    1. 云心怀鹤 博主
      @Jason

      共同进步,反馈的评论后效果,我估计是数据库的原因。

      2026-03-29 07:59 回复
  6. 速度确实可以。我有点不敢试,怕数据库直接搞坏。

    2026-03-28 21:25 回复
    1. 云心怀鹤 博主
      @ymz316

      排查错了,是我的eo加速缓存这里的页面了。其实可以试试,前提是有快照哈哈

      2026-03-29 08:13 回复
    2. 云心怀鹤 博主
      @ymz316

      评论受到了影响,我检测是不是数据库的原因

      2026-03-29 07:59 回复
  7. 这个索引和everything的索引一样?我去问问ai

    2026-03-28 16:35 回复
    1. 云心怀鹤 博主
      @acevs

      加了就有目录,比如75也,它就不是0-75了,划分0-50、50-100、100+,直接定位到第二部分。

      2026-03-29 07:58 回复
  8. typcheo本来就轻量,感觉比WP快!

    2026-03-28 15:31 回复
    1. 云心怀鹤 博主
      @老张博客

      我的服务器只能用ty,wp对我来说臃肿了。

      2026-03-29 07:56 回复