# 执行数据库索引优化说明 ## 方法一:使用数据库管理工具(推荐) ### 使用 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 ```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 ```cmd mysql -u gotest -p2nZhRdMPCNZrdzsd -h 43.133.71.191 -P 3308 gotest < server\database\performance_indexes_simple.sql ``` ### Linux/Mac ```bash mysql -u gotest -p2nZhRdMPCNZrdzsd -h 43.133.71.191 -P 3308 gotest < server/database/performance_indexes_simple.sql ``` ## 方法三:在 Go 代码中执行(临时方案) 如果无法直接执行 SQL,可以在后端代码初始化时执行: ```go // 在 server/models/user.go 的 Init 函数中添加 func Init(version string) { // ... 现有代码 ... // 执行索引优化(可选,建议直接执行 SQL 文件) // 这里可以添加执行索引创建的代码 } ``` ## 验证索引是否创建成功 执行以下 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 查询