【发布时间】:2016-01-28 03:45:51
【问题描述】:
我有一个超过 6 亿行的表。我有一个查询(如营业额报告查询),它选择表的部分(由RegDate 条件过滤的所有数据的最大 5%)。我想对这个查询的结果进行排序。
我在 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();
或
var activites = _turnOverRepository.GetTransactions(account.Id)
.Where(a => a.RegDate >= fromDate && a.RegDate <= toDate)
.ToList();
.OrderBy(a => a.RegDate)
.ThenBy(a => a.RegTime)
【问题讨论】:
-
“我在 Id 和 RegDate 列上使用索引。” - 你能说得更具体点吗?
-
5%过滤器在哪里? -
为什么你不同时尝试并测量执行时间?还使用 sql profiler 检查正在对 db 执行的查询并运行
explain query -
@AntonínLejsek 在此表中插入数据也很重要,因为如果我增加索引数,那么插入时间也会增加。
-
@JuanCarlosOropeza 数据按 RegDate 条件过滤
标签: c# sql sql-server performance linq