全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

索引标签配置

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

📝 发现内容有误?点击此处直接编辑

← 上一篇 标签配置默认值
下一篇 → AutoMigrate 使用
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库