Использует ли LINQ индекс базы данных для выполнения этого запроса? - PullRequest
0 голосов
/ 17 октября 2019

В дополнение к атрибуту ID я устанавливаю EntityFramework для индексации атрибута Name моей модели:

public class EntityTypeConfiguration : IEntityTypeConfiguration<Student>
{
    public void Configure(EntityTypeBuilder<Student> builder)
    {
        builder.ToTable("Students");
        builder.HasKey(obi => obi.ID);
        builder.Property(obj => obj.ID).IsRequired(true);
        builder.HasIndex(obj => obj.Name).IsUnique();
    }
}

Затем в какой-то момент в моем коде я запрашиваю студентов по ихname:

var student = dbContext.Students.First(x => x.Name == "Meryl");

Этот запрос выполняется тысячи раз, и у меня есть миллионы Student s в базе данных. Следовательно, его производительность имеет решающее значение, но в настоящее время он работает очень медленно, поэтому я не уверен, что LINQ фактически использует индекс базы данных.

Есть мысли?

1 Ответ

0 голосов
/ 17 октября 2019

HasIndex используется для указания EF создать индекс для столбца (столбцов), когда EF используется способом Code-First (т. Е. Используйте объектную модель для создания схемы базы данных). В противном случае это не имеет никакого эффекта.

Чтобы ускорить запросы, вы должны убедиться, что индекс в базе данных настроен правильно (например, иметь индекс в столбце Имя) и что запросы, сгенерированные EF, являются производительными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...