1) Có , một lựa chọn với NOLOCK
sẽ hoàn thành nhanh hơn một lựa chọn thông thường.
2) Có , một lựa chọn với NOLOCK
sẽ cho phép các truy vấn khác đối với bảng được hiệu ứng hoàn thành nhanh hơn một lựa chọn thông thường.
Tại sao lại là?
NOLOCK
thông thường (tùy thuộc vào công cụ DB của bạn) có nghĩa là cung cấp cho tôi dữ liệu của bạn và tôi không quan tâm đến trạng thái của nó, và đừng bận tâm giữ nó trong khi bạn đọc từ nó. Tất cả đều nhanh hơn, ít tốn tài nguyên hơn và rất nguy hiểm.
Bạn nên được cảnh báo là không bao giờ thực hiện cập nhật hoặc thực hiện bất kỳ điều gì hệ thống quan trọng hoặc khi yêu cầu tính chính xác tuyệt đối bằng cách sử dụng dữ liệu có nguồn gốc từ NOLOCK
đọc. Rất có thể dữ liệu này chứa các hàng đã bị xóa trong quá trình chạy truy vấn hoặc đã bị xóa trong các phiên khác chưa được hoàn thiện. Có thể dữ liệu này bao gồm các hàng đã được cập nhật một phần. Có thể dữ liệu này chứa các bản ghi vi phạm các ràng buộc khóa ngoại. Có thể dữ liệu này loại trừ các hàng đã được thêm vào bảng nhưng vẫn chưa được cam kết.
Bạn thực sự không có cách nào để biết trạng thái của dữ liệu.
Nếu bạn đang cố lấy những thứ như Số lượng hàng hoặc dữ liệu tóm tắt khác trong đó một số sai số có thể chấp nhận được, thì hãy NOLOCK
là một cách tốt để tăng hiệu suất cho các truy vấn này và tránh để chúng tác động tiêu cực đến hiệu suất cơ sở dữ liệu.
Luôn sử dụng NOLOCK
gợi ý hết sức thận trọng và xử lý mọi dữ liệu mà nó trả về một cách đáng ngờ.