Индекс колонки в Nest
Пусть клиент часто ищет материалы по заголовку. Полное сканирование таблицы при каждом запросе быстро становится узким местом, когда строк накапливается много.
Индекс на одной колонке ставят
декоратором Index прямо
над полем сущности. При
synchronize со значением
true TypeORM при старте
создаст или обновит индекс в
PostgreSQL вместе с таблицей.
Сущность должна быть подключена
через модуль темы, иначе схема
её не увидит.
Покажем на примере постов:
import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number;
@Index()
@Column()
title: string;
}
Таблицу связывают с модулем темы:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Post } from '../post.entity.js';
@Module({
imports: [TypeOrmModule.forFeature([Post])],
})
export class PostsModule {}
Корень настраивает соединение и импорт модуля с сущностью:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { PostsModule } from './posts/posts.module.js';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'postgres',
password: 'postgres',
database: 'site',
autoLoadEntities: true,
synchronize: true,
}),
PostsModule,
],
})
export class AppModule {}
Добавьте в Worker текстовое
поле с индексом по одной колонке,
оформите WorkersModule
и настройте базу с автоматическим
созданием таблицы при старте.