Khung thực thể - Chỉ mục
Chỉ mục là một cấu trúc dữ liệu trên đĩa dựa trên các bảng và dạng xem. Các chỉ mục giúp cho việc truy xuất dữ liệu nhanh hơn và hiệu quả, trong hầu hết các trường hợp. Tuy nhiên, việc quá tải một bảng hoặc dạng xem với các chỉ mục có thể ảnh hưởng đến hiệu suất của các hoạt động khác như chèn hoặc cập nhật.
Lập chỉ mục là tính năng mới trong khung thực thể, nơi bạn có thể cải thiện hiệu suất của ứng dụng Code First của mình bằng cách giảm thời gian cần thiết để truy vấn dữ liệu từ cơ sở dữ liệu.
Bạn có thể thêm chỉ mục vào cơ sở dữ liệu của mình bằng cách sử dụng Index thuộc tính và ghi đè mặc định Unique và Clustered cài đặt để có được chỉ mục phù hợp nhất với tình huống của bạn.
Hãy xem đoạn mã sau, trong đó thuộc tính Index được thêm vào lớp Course cho CourseID.
public partial class Course {
public Course() {
this.Enrollments = new HashSet<Enrollment>();
}
[Index]
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public byte[] VersionNo { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
Khóa được tạo ở trên là không duy nhất, không nhóm. Có quá tải có sẵn để ghi đè các giá trị mặc định này -
Để tạo chỉ mục thành chỉ mục Clustered, bạn cần chỉ định IsClustered = true
Tương tự, bạn cũng có thể đặt một chỉ mục thành một chỉ mục duy nhất bằng cách chỉ định IsUnique = true
Hãy xem đoạn mã C # sau đây, nơi một chỉ mục được nhóm và duy nhất.
public partial class Course {
public Course() {
this.Enrollments = new HashSet<Enrollment>();
}
[Index(IsClustered = true, IsUnique = true)]
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public byte[] VersionNo { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
Thuộc tính Index có thể được sử dụng để tạo một chỉ mục duy nhất trong cơ sở dữ liệu. Tuy nhiên, điều này không có nghĩa là EF có thể suy luận về tính duy nhất của cột khi xử lý các mối quan hệ, v.v. Tính năng này thường được gọi là hỗ trợ cho “các ràng buộc duy nhất”.