实体框架按字符串排序超过1000万行

时间:2016-03-08 12:48:43

标签: sql oracle entity-framework linq

我需要订购和过滤超过1000万行文档名称(因此我无法修改字符串)。我目前有大约2密码的行,并在order by或where子句后超过10-15秒返回结果。 我更喜欢EF解决方案,而不是数据库解决方案,但我愿意接受任何解决方案。 这是一些代码,虽然我认为它没用:

var orderedQuery = dbItems.OrderBy(a => a.DocumentName);
dbItems = dbItems.Where(a=>
          a.DocumentName.ToLower().Contains(filter.DocumentName.ToLower()));

1 个答案:

答案 0 :(得分:0)

您应该在第二个查询中使用初始orderedQuery,而不是再次查询dbItems。我还建议将AsNoTracking添加到您的第一个linq查询中,因为这无疑会显着提高性能

var orderedQuery = dbItems.AsNotracking().OrderBy(a => a.DocumentName);

var filteredList = orderedQuery.Where(a=>
      a.DocumentName.ToLower().Contains(filter.DocumentName.ToLower()));

试试这个,让我们知道它是怎么回事。