跳至内容

索引配置

索引配置

dbx 支持在 schema 层声明索引。PlanSchemaChangesAutoMigrate 会基于 schema 元数据补齐缺失索引。

适用场景

  • 希望索引声明跟 schema 一起维护。
  • 需要同时配置单列与复合索引。

单列索引

type UserSchema struct {
	dbx.Schema[User]
	Username dbx.Column[User, string] `dbx:"username,index"`
	Email    dbx.Column[User, string] `dbx:"email,unique"`
}

复合索引

type UserSchema struct {
	dbx.Schema[User]
	TenantID dbx.Column[User, int64]  `dbx:"tenant_id"`
	Username dbx.Column[User, string] `dbx:"username"`
	Email    dbx.Column[User, string] `dbx:"email"`

	ByTenantAndUsername dbx.Index[User]  `idx:"columns=tenant_id|username"`
	UniqueTenantEmail   dbx.Unique[User] `idx:"columns=tenant_id|email"`
}

命名约定

  • 主键:pk_<table>
  • 普通索引:idx_<table>_<columns>
  • 唯一索引:ux_<table>_<columns>

常见坑

  • idx:"columns=..." 必须使用 schema 中的列名。
  • 写频繁字段索引过多会影响写入性能。

验证

go test ./dbx/... -run Migrate