# 1. 创建脚本 cat > /tmp/add_indexes_simple.sh << 'EOF' #!/bin/bash echo "请输入 MySQL root 密码:" read -s MYSQL_PWD echo "正在扫描 WordPress 站点..." # 获取所有 WordPress 数据库 for DB in $(mysql -uroot -p"$MYSQL_PWD" -e "SHOW DATABASES;" 2>/dev/null | grep -v "Database\|information_schema\|performance_schema\|mysql\|sys"); do # 检查是否有 wp_posts 表 HAS_TABLE=$(mysql -uroot -p"$MYSQL_PWD" -e "USE $DB; SHOW TABLES LIKE 'wp_posts';" 2>/dev/null | wc -l) if [ $HAS_TABLE -gt 0 ]; then echo "处理数据库: $DB" # 添加索引 mysql -uroot -p"$MYSQL_PWD" -e "USE $DB; ALTER TABLE wp_posts ADD INDEX IF NOT EXISTS idx_post_type_status_id (post_type, post_status, ID);" 2>/dev/null mysql -uroot -p"$MYSQL_PWD" -e "USE $DB; ALTER TABLE wp_posts ADD INDEX IF NOT EXISTS idx_post_date (post_date);" 2>/dev/null echo " ✅ $DB 完成" fi done echo "所有索引添加完成!" EOF # 2. 添加执行权限 chmod +x /tmp/add_indexes_simple.sh # 3. 运行脚本 /tmp/add_indexes_simple.sh
添加的两个索引
1️⃣ 索引一:idx_post_type_status_id
ALTER TABLE wp_posts ADD INDEX idx_post_type_status_id (post_type, post_status, ID);
2️⃣ 索引二:idx_post_date
ALTER TABLE wp_posts ADD INDEX idx_post_date (post_date);
🎯 为什么要添加这两个索引?
核心原因:WordPress 最常见的慢查询
WordPress 主题和插件经常执行这样的查询:
-- 查询1:获取文章列表(分页) SELECT * FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY ID ASC LIMIT 100000, 20; -- 查询2:按时间排序(最新文章) SELECT * FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC LIMIT 20;
没有索引时的问题:
┌─────────────────────────────────────┐ │ 没有索引 = 全表扫描 │ ├─────────────────────────────────────┤ │ 📖 就像在一本没有目录的书里找内容 │ │ 🔍 必须一页一页翻看 │ │ 💾 扫描几十万甚至上百万行数据 │ │ ⏱️ 查询耗时:30秒 - 30分钟 │ │ 💿 磁盘 I/O:99% 满载 │ │ 🔥 服务器负载:飙升到 68+ │ └─────────────────────────────────────┘
有索引后:
┌─────────────────────────────────────┐ │ 有索引 = 快速定位 │ ├─────────────────────────────────────┤ │ 📖 就像有目录的书 │ │ 🎯 直接翻到目标页码 │ │ ⚡ 只扫描需要的 20 行数据 │ │ ⏱️ 查询耗时:0.05 秒 │ │ 💿 磁盘 I/O:< 10% │ │ 🍃 服务器负载:正常 │ └─────────────────────────────────────┘
📊 具体好处对比
| 项目 | 添加索引前 | 添加索引后 | 提升 |
|---|---|---|---|
| 查询速度 | 30分钟+ | 0.05秒 | 36,000倍 |
| 服务器负载 | 68 | 6.75 | ↓ 90% |
| 磁盘 I/O | 99% | 7.4% | ↓ 92% |
| CPU 空闲 | 2% | 79% | ↑ 3850% |
| 网站响应 | 超时/极慢 | 秒开 | 质的飞跃 |

.png)



.jpg)
.png)

.png)






评论前必须登录!
注册