DbSet 中的 FirstOrDefault 使用 Linq 很慢

问题描述 投票:0回答:1

我有这个 Linq 表达式 (FirstOrDefault),它非常慢。 选项是一个 DbSet

 DbOption dbo = ctx.Options.FirstOrDefault(o =>
                        o.SynN == oLoaded.SynN &&
                        o.OwnerId == oLoaded.OwnerId &&
                        o.Context == oLoaded.Context);

有什么方法可以更快地找到我的选项?我看到了“表达式”,但如何在表达式中转换此 Linq 代码?我从来没有用过它。

感谢支持

c# linq expression dbset
1个回答
0
投票

如果记录太多,您可以创建索引以提高对数据库的查询性能

CREATE NONCLUSTERED INDEX [IX_Options_SynN_OwnerId_Context] ON [dbo].[Options]
(
    [SynN] ASC,
    [OwnerId] ASC,
    [Context] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
© www.soinside.com 2019 - 2024. All rights reserved.