我正在嘗試使用JDBC編寫一個數據庫獨立應用程序。我現在需要一種方法從某個表中獲取前N個條目。我看到JDBC中有一個setMaxRows
方法,但我不習慣使用它,因爲我害怕數據庫將推出所有結果,只有JDBC驅動程序會減少結果。如果我需要排在十億行的表中前5名的結果,這將打破我的脖子(該表有一個可用的索引)。JDBC setMaxRows數據庫使用情況
編寫特殊的SQL語句爲每一種數據庫是不是很漂亮,但會讓數據庫做聰明的查詢計劃,並停止獲取超過必要的結果。
我可以依靠setMaxRows
告訴數據庫到不行到多少?
我猜我不能依靠在希望的方式這個工作的最壞情況。我最感興趣的是Postgres 9.1和Oracle 11.2,所以如果有人對這些數據庫有經驗,請繼續前進。
好問題。 javadoc說:「設置由Statement對象生成的任何ResultSet對象可以包含的最大行數限制爲給定數量,如果超出限制,超出的行將自動丟棄。」我讀到它的方式意味着JDBC驅動程序可以完成這項工作。我懷疑它的JDBC實現依賴。 – 2012-04-16 14:05:41