我正在计算数据库中的数据(~130 000 000行)。
由于行数很多,我选择1毫升计算它们保存结果然后再选择1毫升等等。
我使用select .. orderby .. skip m... take n...ToList()
因为我希望在内存中包含这些对象。
当我跳过1毫升然后2毫升然后3毫升...然后让我们说6毫升它相当不错但是然后突然查询需要很长时间。
你有同样的问题吗?
有什么方法可以让它更快地运作?
感谢您的帮助, 再见
答案 0 :(得分:0)
您可以使用Rowcount,但我不知道这适用于实体框架。
那样你就去Rowcount()> 2 000 000然后采取(1 000 000)
或者,如果您有一个ID列并且正在遍历以便为id添加条件>最后处理的ID。
这应该比跳过
更快答案 1 :(得分:0)
如果查看生成的SQL,您将看到问题所在。 SQL Server没有本机SKIP,因此实体框架即兴发挥作用。 I've explained some of the details in this post
为了有效地执行此操作,您需要使用不同的方法对数据进行分区,该方法可以由服务器使用索引实现。在不了解更多问题的情况下,我不能说最好的方法是什么,而是寻找一种可以在SQL查询中编制索引的数据分区方法。