2016-05-23 55 views
7

在語句和結果集之間設置讀取大小的區別是什麼? Oracle文檔說,如果在一個Statement上設置了讀取大小,那麼ResultSet也會使用相同的大小,只要在獲取結果集之前設置了讀取大小。如果我將它設置在Statement或ResultSet上,它有什麼不同?我正在使用Oracle數據庫。下面是Oracle關於它的文檔:在語句和結果集之間設置讀取大小的區別

提取大小

默認情況下,當Oracle JDBC運行一個查詢,它在從數據庫遊標中檢索結果集的10行。這是默認的Oracle行提取大小值。通過更改行獲取大小值,可以更改每次訪問數據庫遊標時檢索到的行數。

標準JDBC還使您能夠指定每個數據庫往返查詢時獲取的行數,該數字稱爲獲取大小。在Oracle JDBC中,行預取值用作語句對象中的默認讀取大小。設置獲取大小會覆蓋行預取設置並影響後續查詢在該語句對象中運行。

訪存大小也用於結果集中。當語句對象運行查詢時,語句對象的讀取大小將傳遞給查詢生成的結果集對象。但是,您也可以在結果集對象中設置獲取大小來覆蓋傳遞給它的語句獲取大小。

回答

4

獲取大小真正重要的唯一地方是在ResultSet。當創建ResultSet時,它會從用於創建它的Statement獲取其獲取大小,但稍後可以更改它。

Statement的提取大小視爲默認值,將傳遞給它創建的所有ResultSet。如果你不想使用這個默認值,你可以覆蓋它。

1

沒有區別。如果您在語句上設置獲取大小,那麼它將應用於來自此語句的所有ResultSet實例。

+0

有一個細微的差別。語句中設置的讀取大小將用於第一次讀取。在返回結果集時,第一次讀取完成,因此控制第一次讀取大小的唯一方法是在語句中設置它。如果您知道特定的查詢只返回一行,那麼將結果集中的獲取大小設置爲1將不會執行任何操作,因爲在您的代碼訪問要設置的結果集之前,語句的讀取大小已經用於檢索一行提取大小爲1。 –

相關問題