뭐야.. 인덱스 이렇게 간단하게 만들 수 있는 거였어?
import { Entity, PrimaryGeneratedColumn, Column, Index } from "typeorm"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Index()
@Column()
firstName: string
@Index({ unique: true }) // 유니크 제약 걸 수 있음
@Column()
MiddleName: string
@Column()
@Index("name2-idx") // 이름 커스텀도 가능
lastName: string
}
이렇게 걸 수도 있음.
import { Entity, PrimaryGeneratedColumn, Column, Index } from "typeorm"
@Entity()
@Index(["firstName", "lastName"])
@Index(["firstName", "middleName", "lastName"], { unique: true })
export class User {
@PrimaryGeneratedColumn()
id: number
@Column()
firstName: string
@Column()
middleName: string
@Column()
lastName: string
}
이건 단일 컬럼이 아닌 여러 복합 컬럼에 대한 인덱스 테이블을 생성하는 것
@Entity()
export class Thing {
@Column("point")
@Index({ spatial: true })
point: string
}
@Entity()
@Index("POST_NAME_INDEX", { synchronize: false })
export class Post {
@PrimaryGeneratedColumn()
id: number
@Column()
name: string
}
스키마 변경시 동기화 옵션이 켜져 있으면 편하긴 한데 예상치 못한 변경이나 데이터 손실 발생할 수 있음.
옵션 끄고 수동으로 관리하기.
왜냐면 TypeORM은 일부 옵션은 지원하지 않음.