yunzer_go/server/database/执行索引优化说明.md
2025-11-06 15:56:29 +08:00

2.7 KiB
Raw Blame History

执行数据库索引优化说明

方法一:使用数据库管理工具(推荐)

使用 Navicat、DBeaver、phpMyAdmin 等工具

  1. 连接到数据库:

    • 主机:43.133.71.191
    • 端口:3308
    • 用户名:gotest
    • 密码:2nZhRdMPCNZrdzsd
    • 数据库:gotest
  2. 打开并执行以下文件之一:

    • server/database/performance_indexes_simple.sql (推荐,简单版本)
    • server/database/performance_indexes.sql (完整版本,包含存在性检查)

方法二:使用 MySQL 命令行(如果已安装)

Windows PowerShell

# 方法 1: 使用 Get-Content 管道
Get-Content server\database\performance_indexes_simple.sql | mysql -u gotest -p2nZhRdMPCNZrdzsd -h 43.133.71.191 -P 3308 gotest

# 方法 2: 使用 source 命令(需要先登录 MySQL
mysql -u gotest -p2nZhRdMPCNZrdzsd -h 43.133.71.191 -P 3308 gotest
# 然后在 MySQL 提示符下执行:
source server/database/performance_indexes_simple.sql

Windows CMD

mysql -u gotest -p2nZhRdMPCNZrdzsd -h 43.133.71.191 -P 3308 gotest < server\database\performance_indexes_simple.sql

Linux/Mac

mysql -u gotest -p2nZhRdMPCNZrdzsd -h 43.133.71.191 -P 3308 gotest < server/database/performance_indexes_simple.sql

方法三:在 Go 代码中执行(临时方案)

如果无法直接执行 SQL可以在后端代码初始化时执行

// 在 server/models/user.go 的 Init 函数中添加
func Init(version string) {
    // ... 现有代码 ...
    
    // 执行索引优化(可选,建议直接执行 SQL 文件)
    // 这里可以添加执行索引创建的代码
}

验证索引是否创建成功

执行以下 SQL 查询验证索引:

-- 查看部门表索引
SHOW INDEX FROM yz_tenant_departments;

-- 查看职位表索引
SHOW INDEX FROM yz_tenant_positions;

-- 查看角色表索引
SHOW INDEX FROM yz_roles;

-- 查看员工表索引
SHOW INDEX FROM yz_employees;

注意事项

  1. MySQL 版本要求

    • CREATE INDEX IF NOT EXISTS 需要 MySQL 8.0.12+
    • 如果使用较低版本,请使用 performance_indexes.sql(包含存在性检查)
  2. 执行时间

    • 索引创建可能需要几秒到几分钟,取决于数据量
    • 创建索引期间,表会锁定(通常很快)
  3. 索引已存在

    • 如果索引已存在,CREATE INDEX IF NOT EXISTS 会忽略
    • 如果使用 performance_indexes.sql,会显示"索引已存在"的消息
  4. 性能影响

    • 索引创建后,查询性能会显著提升
    • 插入/更新操作可能稍慢(通常可忽略)

预期效果

  • 查询速度提升:50-90%(取决于数据量)
  • 减少全表扫描
  • 优化 WHERE 和 JOIN 查询