sql-server - 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
我的电脑规格如下
- i3-6100U
- 内存:8 GB
- 系统类型:64位
我的问题是:
虽然在线资源说这是 RAM 问题,但仅添加 RAM 而不升级到 I7 有帮助吗?
与一些有经验的程序员讨论过,代码本身很重要,因为涉及到太多的连接——所以改变 RAM 并没有帮助。任何我可以实现我的主要目标的想法,而无需经过太多的加入。
由于我使用的是 SQL Server,是否有任何其他软件专门设计用于处理大量数据(免费;更适用)并与我计算机的当前规格兼容?
反正我愿意学。
谢谢,文森特
解决方案
内存不足异常是由您使用的 32 位 SSMS 客户端生成的。
select * from [dbo].[MatchRegression] cross join #MyTempTable
显然,您不会手动查看数据并对其执行任何操作,因此我的建议是将其插入另一个表并对其运行查询,而不是尝试选择所有数据以显示在数据网格或客户端应用程序中。SQL Server 应该能够毫无问题地轻松处理数十亿行数据。
不过,您可能需要查看版本比较表,以了解哪个版本的 SQL Server 最适合您的应用程序,具体取决于数据大小、要求等
推荐阅读
- powershell - 如何在名称中有空格的文件夹中运行 PowerShell 脚本?
- swift - NS谓词 | 在实体获取请求上给出错误的异常 | 斯威夫特 4
- react-native - 反应原生中的底部导航
- php - CCavenue支付集成yii框架1版如何实现
- regex - 重定向到 htaccess 上的特定端口的规则
- c# - 通过反射获取 IDictionary 项值设置器
- ruby-on-rails - 如何将现有的 Rails 应用程序转换为 gem
- ubuntu-16.04 - 在 $PATH 上找不到 nvcc 编译器
- python - 如何从“健康”元素中提取文本
- go - 在 labix.org mgo 的 go 模块中使用替换动词