2012-06-04 78 views
3

即時通訊想知道如何確保從SProc返回並存儲在數據表中的結果不會太大而無法在內存中處理。確保SProc不會返回太多的數據

我已經挖掘了一下,發現了以下Find size of object instance in bytes in c#,但選定的答案建議不要這樣做。

我假設這是一個問題已經解決之前,所以ID欣賞任何指針。

謝謝。

+0

是否存儲過程返回可變長度字段,如'VARCHAR(MAX)','VARBINARY(MAX)'或類似? – Quassnoi

+0

Atm,數據庫只包含float和datetime2數據類型。 –

+0

只是用'SELECT TOP 1000'或類似的方法限制你的結果集。 – Quassnoi

回答

2

您可能想要實現分頁。

要做到這一點,添加@pageNum@pageSize參數,您SP和更改查詢:

SELECT * 
FROM (
     SELECT *, ROW_NUMBER() OVER (ORDER BY whatever_field) rn 
     FROM (
--    here goes the old query 
       ) q 
     WHERE rn BETWEEN @pageSize * @pageNum + 1 AND @pageSize * (@pageNum + 1) 
     ) q 
ORDER BY 
     wnatever_field 
+0

在你建議以大塊形式返回結果後,我剛剛偶然發現了同樣的想法。我會試驗以上,看看我如何。非常感謝您的幫助,我非常感謝。 –