我有一个超过6亿行的表。我有一个查询(如营业额报告查询),选择表的部分(最多5%的所有数据按RegDate
条件过滤)。我想对此查询的结果进行排序。
我在Id
和RegDate
列上使用索引。哪一个更快?在IQueryable
或IEnumerable
?
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)
答案 0 :(得分:3)
如果您具有正确的索引,则使用IQueryable在数据库中排序最快。这是因为有关于排序的规则,其中最快的排序发生在已经排序的数据上。索引将对插入数据进行排序。
在(Id,RegDate,RegTime)上创建单个复合索引。