共用方式為


使用陳述式及結果集

當使用 Microsoft SQL Server 2005 JDBC Driver 及它所提供的 StatementResultSet 物件時,有好數種技術可供您用來改善應用程式的效能和可靠程度。

使用適當的陳述式物件

當使用其中一個 Statement 物件 (例如 SQLServerStatementSQLServerPreparedStatementSQLServerCallableStatement 物件) 時,請確定正在對工作使用適當的物件。

  • 如果沒有 OUT 參數,您不需要使用 SQLServerCallableStatement 物件。請改用 SQLServerStatementSQLServerPreparedStatement 物件。

  • 如果不想要多次執行陳述式,或者沒有 IN 或 OUT 參數,您不需要使用 SQLServerCallableStatementSQLServerPreparedStatement 物件。請改用 SQLServerStatement 物件。

對 ResultSet 物件使用適當的並行

除非您真的想要更新結果,否則當建立會產生結果集的陳述式時,請不要要求可更新的並行。預設的順向、唯讀資料指標模型是讀取小型結果集的最快模型。

限制結果集的大小

考慮使用 setMaxRows 方法 (或 SET ROWCOUNT 或 SELECT TOP N SQL 語法),限制可能的大型結果集傳回的資料列數。如果必須處理大型結果集,請考慮使用伺服器資料指標,方法是設定連接字串屬性 selectMethod=cursor。或者,您可以建立具有 com.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY (2004) 捲動功能的陳述式,進行順向、唯讀存取,然後使用 setFetchSize 方法來微調效能。

使用適當的提取大小

若是唯讀的伺服器資料指標,就要在往返於伺服器與驅動程式中使用的記憶體數量之間作取捨。若是可更新的伺服器資料指標,提取大小也會影響結果集對變更的敏感性以及伺服器上的並行。直到發出明確的 refreshRow 方法,或直到資料指標離開提取緩衝區,才能看到目前提取緩衝區內的資料列更新。大型提取緩衝區將具有更好的效能 (更少的伺服器往返),但是對變更的敏感性較低,並會減少伺服器上的並行 (如果使用 CONCUR_SS_SCROLL_LOCKS (1009))。如需最大的變更敏感性,請使用提取大小 1。然而,請注意這將會導致每一個提取的資料列都要往返於伺服器。

對大型 IN 參數使用資料流

使用資料流或以遞增方式具體化的 BLOB 和 CLOB,處理更新大型資料行值或傳送大型 IN 參數。JDBC 驅動程式會多次往返將這些項目「大量」送至伺服器,容許您設定及更新的值大於記憶體可包含的值。

另請參閱

其他資源

增進 JDBC 驅動程式的效能與可靠性