2013-02-04 53 views
0

我在我的表中有1000万条记录。我试图通过使用linq查询, 来获取记录,但这会导致性能问题。如何在没有任何延迟或任何性能问题的情况下获取数据?Linq to object性能问题?

+3

请问您的表有一个索引来支持你的查询?如果您在没有索引的情况下找到1000万条记录中的一条记录 - 那么数据库必须读取整个表格才能找到它。 –

+0

是的。 DB必须找到..什么是最好的实现方式..我必须发送邮件到这些记录 – geeta

回答

1

您可以使用Enumerable.SkipEnumerable.Take实现分页使用LINQ获取数据。为了更快地访问您可以重新访问当前indexes(如果您有任何),数据和尝试加载所需要的数据/列。

您可能会看到:Effective Paging Using Linq (Sample Code) - Code Project

如果你只打算在数据库中搜索记录,并选择其中只有少数和你担心表现那么这将取决于多个数据库服务器上。针对数据源的LINQ查询转化为底层查询语言。如果您正在铺设数据源是SQL Server,那么LINQ会被转换为SQL。您可以通过LINQPad或Visual Studio获取生成的SQL,并查看它是否需要通过查看query execution plan进行优化。您还可以在您的LINQ查询中针对您要搜索的列设置索引,这将大大改善1000万行记录的选择。

+0

这是很好用sp或linq查询? – geeta

+0

@geeta,完全取决于你的要求和技能。如果你对LINQ感到满意,并确保你的表达式会生成一个优化的查询,那么去LINQ,否则去SP。 – Habib

+0

但第一件事就是性能..如果它需要通过SP更少的时间,然后我们会更喜欢一个 – geeta