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