Учебники

Entity Framework — Индекс

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

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

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

Индексирование — это новая функция в структуре сущностей, где вы можете повысить производительность своего приложения 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.

Чтобы сделать индекс кластеризованным, вам нужно указать 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 сможет рассуждать об уникальности столбца при работе со связями и т. Д. Эта функция обычно упоминается как поддержка «уникальных ограничений».