索引标签配置
GORM 支持通过标签为字段创建索引,包括普通索引、唯一索引和复合索引,优化查询性能。
什么是索引标签
索引标签用于在数据库表中创建索引,加速字段查询、排序和去重操作。
普通索引(index)
Go
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"index"` // 创建普通索引
}
自定义索引名称
Go
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"index:idx_user_name"` // 指定索引名
}
唯一索引(uniqueIndex)
Go
type User struct {
ID uint `gorm:"primaryKey"`
Email string `gorm:"uniqueIndex"` // 创建唯一索引
}
自定义唯一索引名称
Go
type User struct {
ID uint `gorm:"primaryKey"`
Email string `gorm:"uniqueIndex:uni_user_email"`
}
复合索引
多个字段使用相同的索引名创建复合索引:
Go
type User struct {
ID uint `gorm:"primaryKey"`
FirstName string `gorm:"index:idx_name_composite"`
LastName string `gorm:"index:idx_name_composite"`
}
索引选项
Go
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"index:idx_name,class:FULLTEXT"` // 全文索引
Email string `gorm:"uniqueIndex:uni_email,option:WHERE deleted_at IS NULL"` // 部分索引
}
使用示例
Go
type Product struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"index:idx_product_name"`
SKU string `gorm:"uniqueIndex:uni_product_sku"`
Category string `gorm:"index:idx_product_category"`
Price float64 `gorm:"index"`
}
// 执行迁移后自动创建索引
db.AutoMigrate(&Product{})
索引类型速查
| 标签 | 用途 | 示例 |
|---|---|---|
| index | 普通索引 | gorm:"index" |
| uniqueIndex | 唯一索引 | gorm:"uniqueIndex" |
| index:name | 自定义索引名 | gorm:"index:idx_user_name" |
| uniqueIndex:name | 自定义唯一索引名 | gorm:"uniqueIndex:uni_email" |
注意事项
- index 和 uniqueIndex 可简写或指定名称
- 复合索引需多个字段使用相同索引名
- 唯一索引保证字段值在表中唯一
- 索引会在 AutoMigrate 或 CreateTable 时自动创建
要点总结
| 索引类型 | 标签写法 | 作用 |
|---|---|---|
| 普通索引 | gorm:"index" | 加速查询 |
| 唯一索引 | gorm:"uniqueIndex" | 保证唯一性 |
| 复合索引 | 相同索引名 | 多字段联合索引 |
| 自定义名称 | index:名称 | 指定索引名 |
存放路径:D:\git2\jwdev\articles\GORM\入门\索引标签配置\索引标签配置.md
📝 发现内容有误?点击此处直接编辑