【发布时间】:2010-12-17 03:02:58
【问题描述】:
在我们的数据库中,我们有一个包含超过 100000 个条目的表,但大多数时候我们只需要其中的一部分。我们通过一个非常简单的查询来做到这一点。
items.AddRange(from i in this
where i.ResultID == resultID && i.AgentID == parentAgentID
orderby i.ChangeDate descending
select i);
在这个查询之后,我们得到一个包含多达 500 个项目的列表。但即使从这个结果来看,我们也只需要最新的和以下的项目。我的同事通过以下方式非常简单地做到了这一点:
items[0];
items[1];
工作正常,因为查询结果已经按日期排序。但是整体表现很差。甚至需要几秒钟。
我的想法是在查询末尾添加一个 .Take(2) 但我的同事说这不会有任何区别。
items.AddRange((from i in resultlist
where i.ResultID == resultID && i.AgentID == parentAgentID
orderby i.ChangeDate descending
select i).Take(2));
我们还没有尝试过,我们仍在寻找其他方法来加快速度。但数据库编程并不是我们的强项,任何建议都会很棒。
也许我们甚至可以对数据库本身进行一些调整?我们使用 SQL Compact 数据库。
【问题讨论】:
标签: sql linq performance