繁体   English   中英

从SQL Server数据库中获取大量数据的最快方法

[英]Fastest way to fetch huge amount of data from SQL Server database

我在数据库中有超过50,000条记录,我必须在我的应用程序中处理(并且数量至少增加2000 /天)。

我目前使用的方式是:Linq到数据库中存储过程的实体,它返回一个对象的集合,以便我可以处理它。

但是我注意到它是一个缓慢的,从数据库中获取这么多记录的最有效方法是什么?

我的代码示例:

   items = (from f in db.spItems().OrderByDescending(f => f.date)
                  group f by f.ID into g
                  select g.FirstOrDefault()).Take(9).ToList();
                  join ar in db.anothertable on f.ID equals ar.ID
                  join t in db.thirdtable on ar.tid equals t.ID

spItems是一个获取结果的存储过程,但有时我必须对其进行多次连接

我会先尝试优化您的查询。 SSMS的速度慢吗? 你使用适当的指数吗? 你需要所有专栏吗? 最重要的是:您是否需要显示所有50000行?

50000条记录的记录并不多,但在Web应用程序中显示所有记录并不常见,因为这意味着您必须为所有记录生成HTML并将其显示在客户端的浏览器中(甚至可能使用ViewState )。 所以我建议使用数据库分页(通过ROW_NUMBER函数)来对结果集进行分区,并仅查询要显示的数据(在GridView每页100行)。

有效地分析大量数据

请考虑以下步骤。 对于这类问题,我们需要在多个层面上工作。

1.使用ADO.net的标准方式获取结果 因为LINQ to SQL最终是一个ORM(附加层)所以显然它会降低性能,就像你的情况一样明显。 看这里

2.如果您没有错过添加索引,选择错误数据类型等任何内容, 请再次查看您的表格设计

3.改进存储过程性能请参见此处

4.划分您的数据。 :如果它是只读的(或不再使用),则将旧数据移动到其他表中,因为您告诉每天添加最少的新2000行。 所以你的桌子大小会显着减少。 请非常仔细地决定这个决定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM