2016-05-23 14 views
7

Sự khác biệt giữa thiết lập kích thước tìm nạp trên Statement vs ResultSet là gì? Tài liệu Oracle nói rằng nếu kích thước tìm nạp được đặt trên một Bản tuyên bố thì điều tương tự cũng được sử dụng bởi ResultSet, miễn là kích thước tìm nạp được đặt trước khi có được tập kết quả. Điều gì làm cho nó khác biệt nếu tôi đặt nó trên Statement hoặc một ResultSet? Tôi đang sử dụng cơ sở dữ liệu Oracle. Sau đây là Oracle tài liệu về nó:Sự khác biệt giữa việc đặt kích thước tìm nạp trên Bảng sao kê so với ResultSet

Fetch Kích

Theo mặc định, khi Oracle JDBC chạy một truy vấn, nó lấy một tập hợp kết quả của 10 dòng cùng một lúc từ con trỏ cơ sở dữ liệu. Đây là giá trị kích thước tìm nạp hàng mặc định của Oracle. Bạn có thể thay đổi số hàng được truy xuất với mỗi chuyến đi đến con trỏ cơ sở dữ liệu bằng cách thay đổi giá trị kích thước tìm nạp hàng.

JDBC chuẩn cũng cho phép bạn chỉ định số lượng hàng được tìm nạp với mỗi vòng lặp cơ sở dữ liệu cho một truy vấn và số này được gọi là kích thước tìm nạp. Trong Oracle JDBC, giá trị nạp trước hàng được sử dụng làm kích thước tìm nạp mặc định trong một đối tượng câu lệnh. Việc đặt kích thước tìm nạp sẽ ghi đè cài đặt tìm nạp trước hàng và ảnh hưởng đến các truy vấn tiếp theo chạy qua đối tượng câu lệnh đó.

Kích thước tìm nạp cũng được sử dụng trong tập kết quả. Khi đối tượng statement chạy một truy vấn, kích thước tìm nạp của đối tượng statement được chuyển tới đối tượng set result được tạo ra bởi truy vấn. Tuy nhiên, bạn cũng có thể đặt kích thước tìm nạp trong đối tượng tập kết quả để ghi đè kích thước tìm nạp câu lệnh đã được truyền cho nó.

Trả lời

4

Nơi duy nhất kích thước tìm nạp thực sự quan trọng là trên ResultSet. Khi số ResultSet được tạo, nó sẽ có kích thước tìm nạp từ Statement được sử dụng để tạo nó, nhưng nó có thể được thay đổi sau này.

Hãy nghĩ đến kích thước tìm nạp của Statement làm mặc định sẽ được chuyển đến tất cả các số ResultSet mà nó tạo. Nếu bạn không muốn sử dụng mặc định này, bạn có thể ghi đè nó.

1

Không có sự khác biệt. Nếu bạn đặt kích thước tìm nạp trên câu lệnh thì nó sẽ áp dụng cho tất cả các cá thể ResultSet xuất phát từ câu lệnh này.

+0

Có sự khác biệt nhỏ. Kích thước tìm nạp được đặt trên báo cáo sẽ được sử dụng cho lần tìm nạp đầu tiên. Vào thời điểm tập kết quả được trả về lần tìm nạp đầu tiên hoàn tất, do đó cách duy nhất để kiểm soát kích thước của lần tìm nạp đầu tiên là đặt nó trên câu lệnh. Nếu bạn biết một truy vấn cụ thể chỉ trả về một hàng thì đặt kích thước tìm nạp thành 1 trên tập kết quả sẽ không làm gì vì kích thước tìm nạp của câu lệnh đã được sử dụng để truy xuất một hàng trước khi mã của bạn có quyền truy cập vào tập kết quả được đặt kích thước tìm nạp cho một. –

Các vấn đề liên quan