TypeORM - Chỉ số

Nói chung, Indexinglà một quá trình để tối ưu hóa hiệu suất của cơ sở dữ liệu bằng cách tối ưu hóa việc lưu trữ dữ liệu. Nó được sử dụng để nhanh chóng xác định vị trí và truy cập dữ liệu trong cơ sở dữ liệu. Phần này giải thích về cách sử dụng chỉ mục trong TypeORM. Các chỉ số được phân thành nhiều loại khác nhau. Chúng ta hãy đi qua từng chi tiết một.

Chỉ số cột

Chúng tôi có thể tạo chỉ mục cho cột cụ thể bằng cách sử dụng @Index. Hãy xem xét một ví dụ về thực thể Khách hàng như được hiển thị bên dưới và chỉ mục được xác định chofirstName cột,

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 cũng cho phép chỉ định tên cho một chỉ mục -

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

Chỉ số duy nhất

Để chỉ định các ràng buộc Duy nhất trong cột của bạn, hãy sử dụng thuộc tính dưới đây:

{ unique: true }

Ví dụ: dưới đây là mã để chỉ định chỉ mục duy nhất cho cột Tên -

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

Để áp dụng chỉ số cho nhiều cột, chúng ta có thể chỉ định trực tiếp nó sau @Entity (). Mã mẫu như sau:

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

Chỉ số không gian

Chỉ mục không gian cho phép truy cập các đối tượng không gian. MySQL và PostgreSQL hỗ trợ các chỉ số không gian. Để bật các chỉ số không gian trong cột của bạn, hãy thêm thuộc tính sau:

{ spatial: true }

Kiểu không gian có nhiều kiểu phụ như, hình học, điểm, chuỗi dòng, đa giác, v.v., Ví dụ: nếu bạn muốn thêm kiểu không gian điểm trong cột của mình, hãy sử dụng mã bên dưới:

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

Tắt đồng bộ hóa

Để tắt đồng bộ hóa, hãy sử dụng tùy chọn dưới đây trên @Index người trang trí -

{ synchronize: false }