Entity Framework - Индекс

Индекс - это структура данных на диске, основанная на таблицах и представлениях. В большинстве случаев индексы делают поиск данных более быстрым и эффективным. Однако перегрузка таблицы или представления индексами может неприятно повлиять на производительность других операций, таких как вставки или обновления.

  • Индексирование - это новая функция в структуре сущностей, с помощью которой вы можете повысить производительность своего приложения Code First, сократив время, необходимое для запроса данных из базы данных.

  • Вы можете добавлять индексы в свою базу данных, используя Index атрибут и переопределить значение по умолчанию Unique и Clustered настройки, чтобы получить индекс, наиболее подходящий для вашего сценария.

Давайте посмотрим на следующий код, в котором атрибут Index добавлен в класс Course для 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; }

}

Созданный выше ключ не является уникальным и некластеризованным. Доступны перегрузки для переопределения этих значений по умолчанию -

  • Чтобы сделать индекс кластеризованным, необходимо указать IsClustered = true.

  • Точно так же вы также можете сделать индекс уникальным, указав IsUnique = true.

Давайте посмотрим на следующий код C #, в котором индекс кластеризован и уникален.

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; }
}

Атрибут индекса можно использовать для создания уникального индекса в базе данных. Однако это не означает, что EF сможет рассуждать об уникальности столбца при работе с отношениями и т. Д. Эту функцию обычно называют поддержкой «уникальных ограничений».