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

100 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 执行数据库索引优化说明
## 方法一:使用数据库管理工具(推荐)
### 使用 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 查询