gpt4 book ai didi

c# - Linq 的性能包含

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:38 24 4
gpt4 key购买 nike

我需要使用过滤器列表来过滤 linq 查询,并且我计划使用 contains 方法来完成此操作。所以它看起来像这样。

List<string> filter = new List<string>();
filter.Add("foo");
filter.Add("bar");
//Additional filters go here, max of about 10 filters
var test = dbcontext.books.Where(x => filter.Contains(x.name)).ToList();

此查询背后的表有很多记录(500,000 条)、一个 PK 标识字段和一个我将要查询的字段的索引。

我的问题是,在沿着这条路线走之前,您是否期望此查询的性能可以接受,或者我应该对如此大的数据集使用不同的方法?

最佳答案

是的,那应该没问题;那只会转化为

select x.* from [books] x where x.name in (@p0,@p1)

使用 @p0 = 'foo'@p1 = 'bar';只要 name 被索引,它就应该可以正常工作。但是,如果 filter 变得非常大,它会变得更有趣。 10 项听起来不错。我还隐含地假设它不会返回所有 500,000 - 但会限制在一个合理的数字;如果不是,请考虑添加一些 .Take(number) 限制。

如果担心,就测量一下。运行 SQL 跟踪或使用分析工具非常容易。

关于c# - Linq 的性能包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com