簡體   English   中英

如何從MySQL Java獲取有限的數據

[英]How to fetch limited data from mysql java

我可以限制結果集中的行數嗎? 我的表包含大約80萬行,如果我從結果集中獲取它們,那肯定會導致OOM異常。 每行有40列。 我不想同時處理它們,但是每一行都要過濾掉一些數據。

先感謝您。

您可以使用JDBC提取大小來限制結果集中的結果。 它比SQL LIMIT更好,因為它將在不更改查詢的情況下也適用於其他數據庫。 Jdbc diriver不會從數據庫讀取整個結果。 每次它將檢索由提取大小指定的記錄,並且不再有內存問題。

如下所示的方法應該是一種SQL解決方案,但效果不佳,因為每次您都必須獲取越來越多的行。

假設您的ORDER BY基於唯一的 int ,並且一次將獲取1000行。

SET currenttop = 0;
SET cuurentid = 0;
SELECT * FROM YourTable t
WHERE t1.ID > @currentID AND (@currentid := t1.ID) IS NOT NULL; 
LIMIT (@currenttop:=@currenttop+1000);

當然,您可以選擇從Java代碼中處理變量。

您可以在SQL查詢中使用limit關鍵字,請參閱以下內容

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

您可以在此處詳細了解使用limit

干杯!

您有兩種選擇。 首先,為SQL查詢添加一個限制。 其次,可以將JDBCTemplate.query()RowCallbackHandler一起使用,一次處理一行。 該模板將處理具有較大結果集的內存問題。

暫無
暫無

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

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