Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ是否利用数据库索引执行此查询?_C#_Asp.net Core_Entity Framework Core - Fatal编程技术网

C# LINQ是否利用数据库索引执行此查询?

C# LINQ是否利用数据库索引执行此查询?,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,除了ID属性外,我还将EntityFramework设置为模型的Name属性的索引: public class EntityTypeConfiguration : IEntityTypeConfiguration<Student> { public void Configure(EntityTypeBuilder<Student> builder) { builder.ToTable("Students"); builder

除了
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();
    }
}
这个查询执行了数千次,数据库中有数百万名
Student
s。因此,它的性能至关重要,但目前运行速度非常慢,因此我不确定LINQ是否真的利用了数据库索引

有什么想法吗?

当EF以代码优先的方式使用时(即使用对象模型创建数据库架构),HasIndex用于指示EF在列上创建索引。否则就没有效果


要加快查询速度,应确保数据库中的索引配置正确(例如,名称列上有一个索引),并且EF生成的查询性能良好

尝试运行,这将允许您捕获LINQ生成的查询并查看查询计划。数据库中该列上是否实际有索引?(我想知道您是否实际迁移了db并创建了索引)要真正了解任何ORM或linqtoswl中发生的情况,唯一的方法是查看生成的SQL的结果查询计划。请使用Management Studio生成现有表(包括索引)的现有CREATE TABLE脚本在你的问题中包括这一点。
var student = dbContext.Students.First(x => x.Name == "Meryl");