🎊 数据库索引v2v2v1

数据库索引v2v2v1

GORM 允许通过 index、uniqueIndex 标签创建索引,这些索引将在使用 GORM 进行AutoMigrate 或 Createtable 时创建

索引标签

GORM 可以接受很多索引设置,例如class、type、where、comment、expression、sort、collate、option

下面的示例演示了如何使用它:

type User struct {

Name string `gorm:"index"`

Name2 string `gorm:"index:idx_name,unique"`

Name3 string `gorm:"index:,sort:desc,collate:utf8,type:btree,length:10,where:name3 != 'jinzhu'"`

Name4 string `gorm:"uniqueIndex"`

Name5 string `gorm:"index:,class:FULLTEXT,option:WITH PARSER ngram"`

Age int64 `gorm:"index:,class:FULLTEXT,comment:hello \\, world,where:age > 10"`

Age2 int64 `gorm:"index:,expression:ABS(age)"`

}

唯一索引

uniqueIndex 标签的作用与 index 类似,它等效于 index:,unique

type User struct {

Name1 string `gorm:"uniqueIndex"`

Name2 string `gorm:"uniqueIndex:idx_name,sort:desc"`

}

复合索引

两个字段使用同一个索引名将创建复合索引,例如:

type User struct {

Name string `gorm:"index:idx_member"`

Number string `gorm:"index:idx_member"`

}

字段优先级

复合索引列的顺序会影响其性能,因此必须仔细考虑

您可以使用 priority 指定顺序,默认优先级值是 10,如果优先级值相同,则顺序取决于模型结构体字段的顺序

type User struct {

Name string `gorm:"index:idx_member"`

Number string `gorm:"index:idx_member"`

}

// column order: name, number

type User struct {

Name string `gorm:"index:idx_member,priority:2"`

Number string `gorm:"index:idx_member,priority:1"`

}

// column order: number, name

type User struct {

Name string `gorm:"index:idx_member,priority:12"`

Number string `gorm:"index:idx_member"`

}

// column order: number, name

多索引

一个字段接受多个 index、uniqueIndex 标签,这会在一个字段上创建多个索引

type UserIndex struct {

OID int64 `gorm:"index:idx_id;index:idx_oid,unique"`

MemberNumber string `gorm:"index:idx_id"`

}

本文章首发在 LearnKu.com 网站上。

🎁 相关推荐

深圳通手机充值方法指引
🎯 365官网登录

深圳通手机充值方法指引

📅 08-18 👀 259
iPad官网什么时候发货?
🎯 365官网登录

iPad官网什么时候发货?

📅 01-07 👀 8267
解决微信运动不计步的常见问题及使用技巧总结
🎯 世界杯365bet

解决微信运动不计步的常见问题及使用技巧总结

📅 08-06 👀 5031