TypeORM - 索引



总体而言,索引是一种通过优化数据存储来优化数据库性能的过程。它用于快速查找和访问数据库中的数据。本节说明如何在 TypeORM 中使用索引。索引分为不同类型。我们来逐一详细了解。

列索引

我们可以使用以下方法为特定列创建索引@Index。考虑一个示例客户实体,如下所示,并且为firstName列定义了索引,

import {Entity, PrimaryGeneratedColumn, Column} from "typeorm"; 

@Entity() 
export class Student { 

   @PrimaryGeneratedColumn() 
   id: number; 
   
   @Index() 
   @Column() 
   firstName: string; 
   
   @Column() 
   lastName: string; 
   
   @Column() 
   age: number; 
   
   @Column() 
   address: string; 
}

@Index还允许为索引指定一个名称 −

@Index("Name-idx") 
@Column() 
firstName: string;

唯一索引

要在列中指定唯一约束,请使用以下属性 −

{ unique: true }

例如,以下代码用于为 Name 列指定唯一索引 −

@Index({ unique: true }) 
@Column() 
firstName: string;

要在多个列上应用索引,我们可以在 @Entity() 之后直接指定它。示例代码如下 −

@Entity() 
@Index(["firstName", "lastName"]) @Index(["firstName", "lastName"], { unique: true })

空间索引

空间索引允许访问空间对象。MySQL 和 PostgreSQL 支持空间索引。要在列中启用空间索引,请添加以下属性 −

{ spatial: true }

空间类型有多种子类型,例如几何、点、线串、多边形等。例如,如果要在列中添加点空间类型,请使用以下代码 −

@Column("point") 
@Index({ spatial: true }) 
point: string;

禁用同步

要禁用同步,请在装饰器@Index上使用以下选项 −

{ synchronize: false }
广告