簡體   English   中英

SQL Server System.OutOfMemoryException +太多結果

[英]SQL Server System.OutOfMemoryException + too many outcomes

我是一個自學的SQL程序員。

當我嘗試加入表時(結果可能接近1億),將引發System.OutOfMemoryException 我的主要目的是生成值的組合; 另一個表(存儲了一組其他數字)將與自己進行比較,在每一行中采用這些值,並制定購買/出售策略。 斜體部分是發生內存不足錯誤的地方。 因此,您可以想象數據集將是巨大的。

這是代碼:

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

顯然,您不會手動查看數據並對其進行任何處理,因此我的建議是將其插入到另一個表中並對它運行查詢,而不是嘗試選擇要在datagrid或客戶端應用程序中顯示的所有數據。 SQL Server應該可以輕松地處理數十億行數據,而不會出現任何問題。

但是,您可能需要查看版本比較表,以根據數據大小,要求等來查看哪種SQL Server版本最適合您的應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM