2012-10-30 24 views
7

Tôi tiếp tục đọc rằng SqlDataReaders nhanh hơn nhiều so với SqlDataAdapters vì tính chất kết nối nhanh, chỉ đọc, một hàng tại một thời điểm, và chúng đặc biệt nhanh hơn SqlDataAdapters khi điền một đối tượng DataTable (SqlDataAdapter.Fill (dataTable)).Nếu SqlDataAdapter sử dụng trình đọc dữ liệu nội bộ, tại sao mọi người nói rằng sử dụng SqlDataReader nhanh hơn?

Tuy nhiên, ở đây và ở đó ai đó sẽ đề cập đến "nó có thể sẽ không tạo sự khác biệt bạn sử dụng vì SqlDataAdapter sử dụng trình đọc dữ liệu nội bộ để điền vào bảng của nó." Nếu điều này là đúng, làm thế nào chính xác có thể các bộ chuyển đổi được rất nhiều chậm hơn nếu nó giao tiếp với cơ sở dữ liệu bằng cách sử dụng một trình đọc dữ liệu nội bộ nào?

Tôi biết tôi có thể thiết lập một số kiểm tra và lập hồ sơ hiệu suất của từng loại, nhưng điều tôi thực sự thích là để ai đó giảm nhẹ sự khác biệt về hiệu suất bị cáo buộc nếu chúng tôi chủ yếu xử lý cùng một quy trình đường.

Tôi hiểu rằng bạn thường sẽ sử dụng trình đọc để tạo danh sách các POCO được nhập mạnh mẽ không giống như bộ điều hợp dữ liệu vừa điền vào bảng. Tuy nhiên, câu hỏi của tôi nghiêm túc về chi tiết về sự khác biệt về hiệu suất giữa hai mối quan tâm không phải của O/RM ...

Trả lời

5

Nếu bạn đang sử dụng DataReader, bạn có thể phản ứng với một số thông tin khi đọc hàng đầu tiên và thậm chí bỏ qua phần còn lại của việc đọc.

Nếu bạn đang sử dụng một DataAdapter, trước tiên bạn phải tải toàn bộ bảng và rồi đọc hàng đầu tiên để phản ứng với cùng một thông tin đó.

+0

Lưu ý đúng, nhưng nếu tôi không phải kiểm tra từng hàng trong một số điều kiện thì sao? Nói cách khác, điều gì sẽ xảy ra nếu tôi chỉ quan tâm đến việc lấy ra một tập hợp toàn bộ các bản ghi để nói về một GridView? – bglee

+1

@bglee Bạn sẽ phải trang web nguồn của bạn vì sao bạn cho rằng một DataReader nhanh hơn một DataAdapter * trong mọi trường hợp *. Chúng chỉ là các công cụ khác nhau để truy cập dữ liệu. DataAdapters là các đối tượng nặng hơn vì chúng có thể làm được nhiều thứ hơn với dữ liệu, chẳng hạn như cập nhật, xóa, v.v. – LarsTech

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