2010-10-04 60 views
1

我在oracle數據庫上有一個「select * from tables..joins ...」查詢,這將返回大約2200萬行。我使用C#和ODP.NET,如下所示: oracleDataReader odr = command.ExecuteReader(); 但是在執行這個聲明的過程中,需要大約1,5 Gb的RAM,這並不是很好。 關於如何保存一些內存的任何ideea? 謝謝!db閱讀器的內存問題

+0

你真的要選擇多行?如果是這樣,你能不能在多個較小的選擇中分割選擇? – 2010-10-04 12:26:38

+0

是的,你可能會嘗試做分頁查詢,而不是 – Larry 2010-10-04 12:30:12

+0

你的意思是1.5GB的數據庫,或C#運行的地方?當你拿到它們時,你在做什麼? – 2010-10-04 13:11:28

回答

1

首先,所有嘗試在查詢中添加一些where子句,如果它可能最大限度地減少結果的數量。你確定你一次需要全部2200萬個結果嗎?

然後你可以改變select * from ....到選擇columnA,columnB from ...這也會節省一些內存,因爲select * ...返回所有列中的數據,你使用的所有表查詢。這可能不是很有效。問候:)

0

Oracle必須支持這樣的表達:從表 SELECT * WHERE ROWNUM < = 10