I. VẤN ĐỀ ĐẶT RA
Đối với những Table lớn, hàng triệu Record thì việc cập nhật dữ liệu là rất mất thời gian, ngoài ra nó còn khóa (lock) những user khác thao tác với dữ liệu trong bảng (Update/ Delete). Có 1 giải pháp là chia dữ liệu thành từng nhóm nhỏ và lần lượt Update từng nhóm, bạn vẫn Update được dữ liệu, và những User khác vẫn thao tác với bảng bình thường.
II. THỰC HÀNH
Bài thực hành được thực hiện trên SQL Server 2008.
Để chuẩn bị cho ví dụ này, tôi tạo 1 bảng
tblTest, có 1 cột là n, và insert vào 500.000 dòng, từ 1 đến 500.000

Sau đó tôi bắt đầu chia table thành từng đoạn, mỗi đoạn là 1000 Record và bắt đầu Update, cho mỗi cột tăng lên 1. Trong lúc đang Update, bạn chuyển sang tab '
Messages', sẽ thấy được từng đoạn 1000 record lần lượt được Update.
Lưu ý: biến
@@ROWCOUNT trả về tổng số dòng đã bị tác động bởi câu query. Trong ví dụ này nếu
@@ROWCOUNT=0, tức là toàn bộ Record trong Table đã được Update.
Quang Vinh
mai.quangvinh@sqlvn.com
0 comments:
Post a Comment