TypeORM - Índices
Em geral, Indexingé um processo para otimizar o desempenho de um banco de dados, otimizando o armazenamento de dados. Ele é usado para localizar e acessar rapidamente os dados em um banco de dados. Esta seção explica como usar o índice no TypeORM. Os índices são classificados em diferentes tipos. Vamos examinar um por um em detalhes.
Índices de coluna
Podemos criar um índice para uma coluna particular usando @Index. Considere um exemplo de entidade Cliente conforme mostrado abaixo e índice definido parafirstName coluna,
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 permite especificar o nome de um índice também -
@Index("Name-idx")
@Column()
firstName: string;
Índices únicos
Para especificar restrições exclusivas em sua coluna, use a propriedade abaixo -
{ unique: true }
Por exemplo, abaixo está o código para especificar um índice exclusivo para a coluna Nome -
@Index({ unique: true })
@Column()
firstName: string;
Para aplicar índices para mais de uma coluna, podemos especificá-lo diretamente após @Entity (). O código de amostra é o seguinte -
@Entity()
@Index(["firstName", "lastName"]) @Index(["firstName", "lastName"], { unique: true })
Índices espaciais
O índice espacial permite acessar objetos espaciais. MySQL e PostgreSQL suportam índices espaciais. Para habilitar índices espaciais em sua coluna, adicione a seguinte propriedade -
{ spatial: true }
O tipo espacial tem vários subtipos, como geometria, ponto, string de linha, polígono, etc., por exemplo, se você deseja adicionar o tipo espacial de ponto em sua coluna, use o código abaixo -
@Column("point")
@Index({ spatial: true })
point: string;
Desativar sincronização
Para desativar a sincronização, use a opção abaixo em @Index decorador -
{ synchronize: false }