TypeORM - Indices

En général, Indexingest un processus pour optimiser les performances d'une base de données en optimisant le stockage des données. Il permet de localiser et d'accéder rapidement aux données d'une base de données. Cette section explique comment utiliser l'index dans TypeORM. Les indices sont classés en différents types. Passons en revue un par un en détail.

Index de colonne

Nous pouvons créer un index pour une colonne particulière en utilisant @Index. Prenons un exemple d' entité client comme indiqué ci-dessous et d'index défini pourfirstName colonne,

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 permet également de spécifier le nom d'un index -

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

Des indices uniques

Pour spécifier des contraintes uniques dans votre colonne, utilisez la propriété ci-dessous -

{ unique: true }

Par exemple, ci-dessous est le code pour spécifier un index unique pour la colonne Nom -

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

Pour appliquer des index à plusieurs colonnes, nous pouvons le spécifier directement après @Entity (). L'exemple de code est le suivant -

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

Indices spatiaux

L'index spatial permet d'accéder aux objets spatiaux. MySQL et PostgreSQL prennent en charge les indices spatiaux. Pour activer les index spatiaux dans votre colonne, ajoutez la propriété suivante -

{ spatial: true }

Le type spatial a plusieurs sous-types tels que, géométrie, point, chaîne de ligne, polygone, etc., par exemple, si vous souhaitez ajouter un type spatial de point dans votre colonne, utilisez le code ci-dessous -

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

Désactiver la synchronisation

Pour désactiver la synchronisation, utilisez l'option ci-dessous sur @Index décorateur -

{ synchronize: false }