sử dụng con trỏ
ADDENDUM:[Ví dụ về con trỏ MS SQL]
declare @field1 int
declare @field2 int
declare cur CURSOR LOCAL for
select field1, field2 from sometable where someotherfield is null
open cur
fetch next from cur into @field1, @field2
while @@FETCH_STATUS = 0 BEGIN
--execute your sproc on each row
exec uspYourSproc @field1, @field2
fetch next from cur into @field1, @field2
END
close cur
deallocate cur
trong MS SQL, đây là một bài viết ví dụ
lưu ý rằng con trỏ chậm hơn các hoạt động dựa trên tập hợp, nhưng nhanh hơn các vòng lặp while thủ công; chi tiết hơn trong câu hỏi SO này
ADDENDUM 2:nếu bạn sẽ xử lý nhiều hơn chỉ một vài bản ghi, trước tiên hãy kéo chúng vào bảng tạm thời và chạy con trỏ qua bảng tạm thời; điều này sẽ ngăn SQL leo thang thành bảng khóa và tăng tốc hoạt động
ADDENDUM 3:và tất nhiên, nếu bạn có thể nội tuyến bất kỳ thủ tục nào được lưu trữ của bạn đang thực hiện với mỗi ID người dùng và chạy toàn bộ nội dung dưới dạng một câu lệnh cập nhật SQL duy nhất, điều đó sẽ là tối ưu