TypeORM - Indici

In generale, Indexingè un processo per ottimizzare le prestazioni di un database ottimizzando l'archiviazione dei dati. Viene utilizzato per individuare e accedere rapidamente ai dati in un database. Questa sezione spiega come utilizzare index in TypeORM. Gli indici sono classificati in diversi tipi. Vediamone uno per uno in dettaglio.

Indici di colonna

Possiamo creare un indice per una particolare colonna usando @Index. Considera un esempio di entità Cliente come mostrato di seguito e indice definito perfirstName colonna,

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 consentire di specificare il nome anche per un indice -

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

Indici unici

Per specificare i vincoli Unique nella colonna, utilizza la proprietà seguente:

{ unique: true }

Ad esempio, di seguito è riportato il codice per specificare un indice univoco per la colonna Nome:

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

Per applicare indici per più di una colonna, possiamo specificarlo direttamente dopo @Entity (). Il codice di esempio è il seguente:

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

Indici spaziali

L'indice spaziale consente di accedere agli oggetti spaziali. MySQL e PostgreSQL supportano gli indici spaziali. Per abilitare gli indici spaziali nella colonna, aggiungi la seguente proprietà:

{ spatial: true }

Il tipo spaziale ha più sottotipi come geometria, punto, stringa di linea, poligono ecc., Ad esempio, se si desidera aggiungere il tipo spaziale di punti nella colonna, utilizzare il codice seguente:

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

Disabilita la sincronizzazione

Per disabilitare la sincronizzazione, utilizzare l'opzione di seguito su @Index decoratore -

{ synchronize: false }