Các cách thông thường để đặt kích thước tìm nạp hàng là:
- Qua
java.sql.Connection
lớp triển khai nhà cung cấp phương pháp tùy chỉnh (ví dụ:OracleConnection.setDefaultRowPrefetch
) - Qua
java.sql.Statement.setFetchSize(int)
:cung cấp gợi ý cho trình điều khiển về kích thước tìm nạp hàng cho tất cảResultSets
thu được từStatement
này . Phương thức này được kế thừa bởiPreparedStatement
vàCallableStatement
. Hầu hết các trình điều khiển JDBC đều hỗ trợ nó. - Qua
java.sql.ResultSet.setFetchSize(int)
:đưa ra gợi ý cho trình điều khiển về kích thước tìm nạp hàng cho tất cảResultSet
này .
Trình điều khiển JDBC của MS SQL Server không hỗ trợ bất kỳ cách nào sau đây:
- Trình điều khiển MSSQL không có phương pháp như vậy.
- Thật không may, trong khi hầu hết các trình điều khiển tôn trọng gợi ý, trình điều khiển MSSQL thì không. Vì vậy, không hữu ích cho bạn. Xem Phương thức Statement.setFetchSize (nSize) thực sự là gì làm trong trình điều khiển JDBC của SQL Server?
- Cùng một vấn đề với
Statement
.
Theo mặc định, nó truy xuất tất cả các hàng từ cơ sở dữ liệu trừ khi bạn chỉ định loại con trỏ trong trình điều khiển JDBC. Trình điều khiển MSSQL không thể kiểm soát trực tiếp kích thước tìm nạp bằng các phương pháp thông thường.
Giải pháp:
- Truyền
Statement
của bạn thànhSQLServerStatement
và sử dụng phương thứcsetMaxRows(int)
. Tại sao họ không triển khai điều này trong phương pháp chuẩn Steve Ballmer chỉ biết thôi; ^) - Tạo trình điều khiển của bạn bằng loại con trỏ. Kích thước tìm nạp mặc định cho con trỏ là 1. Đặt
Connection
thuộc tính chuỗiselectMethod=cursor
. Ngoài ra, bạn có thể tạoStatement
vớicom.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY
khả năng cuộn để truy cập chỉ chuyển tiếp, chỉ đọc, sau đó sử dụngsetFetchSize
phương pháp điều chỉnh hiệu suất. http://technet.microsoft.com/en -us / library / aa342344% 28SQL.90% 29.aspx - Sử dụng SQL (độc quyền) để giới hạn số lượng hàng được trả về ( không giống như đặt kích thước tìm nạp ):
SET ROWCOUNT
hoặcSELECT TOP N
- Chuyển sang mã nguồn mở jTDS trình điều khiển, được chế tạo đặc biệt để khắc phục sự cố của trình điều khiển SQL Server. Đó là một trình điều khiển vượt trội.