2011-11-21 44 views
0

我有一个LINQ查询。该查询从数据库中检索10000条记录。但是,执行此查询需要很长时间 - 大约2分钟。可能是什么原因?然后将数据显示在列表中的DataGridView中LINQ - .tolist()

+1

我建议不要执行“ToList()”,而是可以使用IEnumberable或IQueryable形式的结果? –

+1

没有足够的信息。你有快速连接到你的数据库?你有适当的连接,索引等吗?你是否包含一堆导航属性?实现大量数据并设置状态跟踪并不是一项廉价的操作。没有任何真正的解释(或代码!)说“我的代码很慢”并不是特别有用。 –

+1

你确定它是'ToList()'慢,而不是添加到DataGridView? –

回答

1
  1. 启动SQL Server Profiler(可在sql management studio的工具菜单中找到)。
  2. 研究生成的实际SQL查询并验证您的查询确实给出了一个查询而不是10.000。有时linq-to-sql无法很好地转换为SQL。
  3. 复制执行的查询。
  4. 将查询粘贴到SQL管理工作室窗口中。
  5. 启用“实际查询计划”
  6. 运行查询并检查查询计划并查看它是否建议任何新索引。创建它们并重试。
+0

这是关于Postgres的,http://stackoverflow.com/questions/8184050/linq-to-postgresql –