Các cách thông thường để đặt kích thước tìm nạp hàng là:
- Qua
java.sql.Connectionlớ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ảResultSetsthu được từStatementnày . Phương thức này được kế thừa bởiPreparedStatementvà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ảResultSetnà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
Statementcủa bạn thànhSQLServerStatementvà 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
Connectionthuộc tính chuỗiselectMethod=cursor. Ngoài ra, bạn có thể tạoStatementvớicom.microsoft.sqlserver.jdbc.SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLYkhả năng cuộn để truy cập chỉ chuyển tiếp, chỉ đọc, sau đó sử dụngsetFetchSizephương pháp điều chỉnh hiệu suất. https://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 ROWCOUNThoặ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.