首页 > 解决方案 > SQL Server System.OutOfMemoryException + 太多结果

问题描述

我是一名自学 SQL 程序员。

当我尝试加入表格时(结果可能接近 1 亿),System.OutOfMemoryException抛出了 a。我的主要目的是产生价值的组合;另一个表(存储一组其他数字)将在每一行中获取这些值,与自身进行比较并设计买入/卖出策略。这个斜体部分是发生内存不足错误的地方。因此,您可以想象数据集将是巨大的。

这是代码:

select * 
into #MyTempTable 
from
    (Select distinct Parm_H 
     from [dbo].[Parmset1]) A1
inner join 
    (Select distinct Parm_D 
     from [dbo].[Parmset1]) A2 on A1.Parm_H > A2.Parm_D
inner join
    (Select distinct Parm_A 
     from [dbo].[Parmset1]) A3 on A2.Parm_D > A3.Parm_A


select * 
from [dbo].[MatchRegression]
cross join #MyTempTable

我的电脑规格如下

我的问题是:

反正我愿意学。

谢谢,文森特

标签: sql-serverjoinout-of-memorybigdata

解决方案


内存不足异常是由您使用的 32 位 SSMS 客户端生成的。

select * from [dbo].[MatchRegression] cross join #MyTempTable

显然,您不会手动查看数据并对其执行任何操作,因此我的建议是将其插入另一个表并对其运行查询,而不是尝试选择所有数据以显示在数据网格或客户端应用程序中。SQL Server 应该能够毫无问题地轻松处理数十亿行数据。

不过,您可能需要查看版本比较表,以了解哪个版本的 SQL Server 最适合您的应用程序,具体取决于数据大小、要求等


推荐阅读