Tôi đoán đó là một hạn chế do việc thực hiện. Cho phép cài đặt này trên nhiều bảng là một điểm nhấn tiềm năng:
Vì đây là tham số phiên, cho phép kích hoạt cài đặt trên một bảng có nghĩa là cờ đơn giản và id đối tượng của bảng để lưu trữ trên phiên, phía máy chủ. Có thể đây chỉ là một số nguyên duy nhất: 0 nếu không có IDENTITY_INSERT hoạt động và một số mã hóa của cơ sở dữ liệu + objectid cho bảng.
Cho phép tham số được đặt trên nhiều bảng trong một phiên có nghĩa là máy chủ sẽ lưu trữ một danh sách động của các đối tượng đó và kiểm tra nó cho mỗi câu lệnh chèn. Hãy tưởng tượng một phiên kích hoạt tham số cho một nghìn bảng:
- Điều này có nghĩa là máy chủ đã phân bổ 1000 mục trong biến phiên
- Điều này cũng có nghĩa là máy chủ phải kiểm tra danh sách 1000 mục cho mỗi câu lệnh chèn trong phiên này.
Ngoài ra, tôi nghi ngờ rằng việc đặt id_insert trên có hiệu năng rộng trên hiệu năng trên máy chủ. Trong sybase có một " yếu tố thiết lập ghi nhận dạng ", cho phép lưu giá trị của bộ đếm nhận dạng của một bảng chỉ được lưu trong một thời gian (giá trị được giữ trong bộ nhớ và ghi vào đĩa một lần và tại máy chủ tắt ). SQL Server dựa trên cùng một mã nên có thể có một số tối ưu hóa tương đương, nhưng việc kích hoạt id_insert trên một bảng có thể hạn chế máy chủ lưu giá trị nhận dạng cho mỗi lần chèn, bởi vì nó không thể đảm bảo kích thước khoảng cách tối đa. Vì vậy, nếu một phiên làm cho hiệu suất đạt được trên các phần chèn trong một bảng thì điều này có thể được chấp nhận, nhưng nếu nó có thể tạo ra cú đánh hoàn hảo trên tất cả các bảng auto_increment trên máy chủ ..