[英]How to programmatically create a Java ResultSet from custom data with no database
[英]How many times does a Java ResultSet ask for data from database?
我可以看到 Java ResultSet 從數據庫中請求數據的次數嗎? 我有一個大表(100 萬條記錄),我想看看它從數據庫中提取了多少數據塊。 我的數據庫是 Oracle。
“結果集”文檔指出:
獲取大小
默認情況下,當 Oracle JDBC 運行查詢時,它會從數據庫 cursor 中一次檢索 10 行的結果集。這是默認的 Oracle 行提取大小值。 您可以通過更改行提取大小值來更改每次訪問數據庫 cursor 時檢索到的行數。
標准 JDBC 還允許您指定每次數據庫往返查詢所提取的行數,該數字稱為提取大小。 在 Oracle JDBC 中,行預取值用作語句 object 中的默認提取大小。設置提取大小會覆蓋行預取設置,並影響通過該語句運行的后續查詢 object。
提取大小也用於結果集中。 當語句 object 運行查詢時,語句 object 的提取大小將傳遞給查詢產生的結果集 object。 但是,您也可以在結果集中設置提取大小 object 以覆蓋傳遞給它的語句提取大小。
筆記:
生成結果集后對語句 object 的提取大小所做的更改不會影響該結果集。
結果集提取大小(顯式設置或默認等於傳遞給它的語句提取大小)決定了在該結果集的任何后續數據庫訪問中檢索的行數。 這包括完成原始查詢仍然需要的任何行程,以及將數據重新提取到結果集中的任何行程。 可以顯式或隱式地重新獲取數據,以更新滾動敏感或滾動不敏感/可更新的結果集。
設置獲取大小
以下方法在所有
Statement
、PreparedStatement
、CallableStatement
和ResultSet
對象中都可用,用於設置和獲取提取大小:void setFetchSize(int rows) throws SQLException int getFetchSize() throws SQLException
要設置查詢的提取大小,請在運行查詢之前對語句 object 調用
setFetchSize
。 如果將提取大小設置為N
,則每次訪問數據庫都會提取N
行。運行查詢后,您可以對結果集 object 調用
setFetchSize
以覆蓋傳遞給它的語句 object 提取大小。 這將影響任何后續訪問數據庫以獲取原始查詢的更多行,以及影響任何以后的行重新獲取。
如果您想知道訪問數據庫的次數,請在語句中調用getFetchSize()
,然后將結果集中的總行數除以獲取大小(並向上舍入)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.