示例

创建简单索引

我们可以在实体的属性上使用 @Index() 装饰器来创建一个简单的索引。

@Entity()
@Index('index_name', ['columnName'])
export class User {
    @PrimaryGeneratedColumn()
    id: number;
 
    @Column()
    @Index()
    username: string;
}

以上示例中,我们在 User 实体的 username 属性上创建了一个简单的索引。

创建复合索引

除了简单索引外,我们还可以创建复合索引。复合索引是指同时对多个属性进行建立的索引。

@Entity()
@Index('index_name', ['column1', 'column2'])
export class User {
    @PrimaryGeneratedColumn()
    id: number;
 
    @Column()
    username: string;
 
    @Column()
    email: string;
}

以上示例中,我们在 User 实体的 usernameemail 属性上创建了一个复合索引。

创建唯一索引

除了普通的索引外,我们还可以创建唯一索引。唯一索引保证了被标记为唯一的属性值不会重复。

@Entity()
@Unique(['username'])
export class User {
    @PrimaryGeneratedColumn()
    id: number;
 
    @Column()
    username: string;
}

以上示例中,我们在 User 实体的 username 属性上创建了一个唯一索引。

通过使用 TypeORM 的装饰器,我们可以轻松地定义和管理实体上的各种类型的索引,从而优化数据库查询性能。