哪一个更快?在IQueryable或IEnumerable中对数据进行排序?

时间:2016-01-28 03:45:51

标签: c# sql sql-server performance linq

我有一个超过6亿行的表。我有一个查询(如营业额报告查询),选择表的部分(最多5%的所有数据按RegDate条件过滤)。我想对此查询的结果进行排序。

我在IdRegDate列上使用索引。哪一个更快?在IQueryableIEnumerable

中对数据进行排序
var activites = _turnOverRepository.GetTransactions(account.Id)
                .Where(a => a.RegDate >= fromDate && a.RegDate <= toDate)
                .OrderBy(a => a.RegDate)
                .ThenBy(a => a.RegTime)
                .ToList();

OR

var activites = _turnOverRepository.GetTransactions(account.Id)
                .Where(a => a.RegDate >= fromDate && a.RegDate <= toDate)
                .ToList();
                .OrderBy(a => a.RegDate)
                .ThenBy(a => a.RegTime)

1 个答案:

答案 0 :(得分:3)

如果您具有正确的索引,则使用IQueryable在数据库中排序最快。这是因为有关于排序的规则,其中最快的排序发生在已经排序的数据上。索引将对插入数据进行排序。

在(Id,RegDate,RegTime)上创建单个复合索引。