Tôi biết rằng một INSERT trên bảng SQL có thể bị chậm vì bất kỳ lý do nào:
- Sự tồn tại của TRIGGER trên bảng
- Rất nhiều ràng buộc bắt buộc phải được kiểm tra (thường là khóa ngoại)
- Chia trang trong chỉ mục được nhóm khi một hàng được chèn vào giữa bảng
- Cập nhật tất cả các chỉ mục không phân cụm
- Chặn từ hoạt động khác trên bàn
- Thời gian phản hồi viết IO kém
- ... bất cứ điều gì tôi bỏ lỡ?
Làm thế nào tôi có thể biết ai chịu trách nhiệm trong trường hợp cụ thể của tôi? Làm cách nào tôi có thể đo lường tác động của việc chia trang so với cập nhật chỉ mục không được nhóm so với mọi thứ khác?
Tôi có một Proc được lưu trữ chèn khoảng 10.000 hàng cùng một lúc (từ bảng tạm thời), mất khoảng 90 giây cho mỗi 10k hàng. Điều đó chậm đến mức không thể chấp nhận được, vì nó khiến các spids khác hết thời gian.
Tôi đã xem xét kế hoạch thực hiện và tôi thấy nhiệm vụ INDEX CLUSTERED INDEX và tất cả các TÌM KIẾM INDEX từ các tra cứu FK, nhưng nó vẫn không cho tôi biết tại sao phải mất nhiều thời gian như vậy. Không có kích hoạt, nhưng bảng có một số FKeys (dường như được lập chỉ mục đúng).
Đây là cơ sở dữ liệu SQL 2000.