2012-04-13 35 views
6

Tôi muốn thực hiện truy vấn chọn trả về rất nhiều dữ liệu trên cơ sở dữ liệu. Cơ sở dữ liệu cho biết tôi buộc phải phân tách các truy vấn của tôi theo khối 10000 kết quả với giới hạn bù đắp +. Trong khi tôi lặp lại các khối này, người khác cập nhật cơ sở dữ liệu có thể trong một số trường hợp làm cho db trả về cùng một hàng nhiều lần. Tôi xử lý bằng bộ lọc hậu xử lý xóa các hàng có id trùng lặp nhưng tôi tự hỏi có cách nào để xây dựng một tập hợp các truy vấn sql cho phép tôi có được chế độ xem mạch lạc của cơ sở dữ liệu trên nhiều câu lệnh chọn không. tức là BEGIN + COMMIT nhưng để chọn.Chế độ xem chỉ đọc mạch lạc của cơ sở dữ liệu

Tôi đã đề cập đến rằng tôi không phải là người sql phải không?

+1

Hãy nêu rõ bạn đang sử dụng cơ sở dữ liệu nào và mã trên phần nhận của bạn (bất kể ngôn ngữ nào). Tôi nghi ngờ rằng hầu hết các DB có thể cung cấp nhiều kết quả hơn khi chúng được gọi trong chế độ phát trực tiếp, nhưng điều đó không thể nói chắc chắn nếu không có thông tin. –

+0

Trong thực tế, tôi phải thú nhận rằng vấn đề này xảy ra trong khi nói chuyện với một máy chủ virtuoso sparql. Tất cả các cơ sở dữ liệu sql tôi từng sử dụng xử lý trường hợp này độc đáo bởi chỉ streaming dữ liệu cho tôi cho đến khi tôi nhận được tất cả. – mathieu

+0

Vâng, vì đây là một dự án thương mại, bạn đã thử hỏi đường dây nóng chưa? Ý tôi là, nó sẽ cung cấp cho bạn một giải pháp theo cách (có thể dưới hình thức giao dịch hoặc phát trực tuyến) và các nhà phát triển sẽ biết rõ nhất. –

Trả lời

1

Bạn có thể không:

Đặt hàng chúng theo ID, nhận 10000 đầu tiên, nhận id LAST.

thời gian thứ hai xung quanh bộ lọc trên lớn hơn là id LAST, nhận được tới 10000.

Làm tương tự cho đến khi bạn thực hiện

Select top(10000) * from Table order by id 

lấy id cuối cùng

Select top(10000) * from Table where id> LAST order by id 

LAST tất nhiên được thay thế bằng một số

Mức độ rất thấp, nhưng nên giải quyết vấn đề d loại bỏ các bản sao

+0

điều gì sẽ xảy ra nếu một hàng bị xóa trong khi tôi đang tìm trong cơ sở dữ liệu và id hàng của nó được sử dụng lại? – mathieu

+0

bạn sẽ không nhận được phiên bản "mới" trước khi bạn chạy điều này. id hàng aught là duy nhất, nhưng có lẽ không phải trong trường hợp của bạn .... là có một dấu thời gian bạn có thể sử dụng cho việc phân loại? Vì vậy, nhận được những cái mới cuối cùng. Bạn sẽ phải đối phó với cùng một vấn đề ID một lần nữa mặc dù ... – Steen

+0

@mathieu chức năng đó sẽ hoạt động nếu ID là duy nhất. Nếu nó không (có thể được tái sử dụng) thì bạn nên tạo một ID duy nhất và sử dụng nó. –

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