TypeORM-インデックス

一般に、 Indexingは、データストレージを最適化することによってデータベースのパフォーマンスを最適化するプロセスです。これは、データベース内のデータをすばやく見つけてアクセスするために使用されます。このセクションでは、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 }

たとえば、以下は名前列の一意のインデックスを指定するコードです-

@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 }