Khi tôi đọc câu hỏi của Mike, Anh ấy hỏi liệu Ràng buộc FK có tạo chỉ mục trên cột FK trong Bảng FK không (Bảng 1). Câu trả lời là không, và nói chung. (vì mục đích của ràng buộc), không cần phải làm điều này (Các) cột được định nghĩa là "TARGET" của ràng buộc, mặt khác, phải là một chỉ mục duy nhất trong bảng được tham chiếu, hoặc là khóa chính hoặc một phím thay thế. (chỉ mục duy nhất) hoặc stat Constraint Tạo sẽ thất bại.
(EDIT: Đã thêm để đối phó rõ ràng với nhận xét bên dưới) - Cụ thể, khi cung cấp tính nhất quán dữ liệu có ràng buộc khóa ngoại. một chỉ mục có thể ảnh hưởng đến hiệu suất của một Ràng buộc DRI chỉ cho việc xóa một Hàng hoặc các hàng ở phía FK. Khi sử dụng ràng buộc, trong khi chèn hoặc cập nhật bộ xử lý biết giá trị FK, và phải kiểm tra sự tồn tại của một hàng trong bảng được tham chiếu ở phía PK. Đã có một chỉ mục ở đó. Khi xóa một hàng ở phía PK, nó phải xác minh rằng không có hàng nào ở phía FK. Một chỉ mục có thể hữu ích một chút trong trường hợp này. Nhưng đây không phải là một kịch bản phổ biến.
Ngoài ra, trong một số loại truy vấn nhất định, tuy nhiên, nơi bộ xử lý truy vấn cần tìm các bản ghi ở nhiều phía của một kết nối sử dụng cột khóa ngoài đó. tham gia hiệu suất là tăng khi có chỉ mục tồn tại trên khóa ngoại đó. Nhưng điều kiện này là đặc biệt đối với việc sử dụng cột FK trong truy vấn kết nối, không phải với sự tồn tại của ràng buộc khóa ngoài ... Nó không quan trọng liệu phía bên kia của kết nối là PK hay chỉ một số cột tùy ý khác. Ngoài ra, nếu bạn cần lọc, hoặc sắp xếp các kết quả của một truy vấn dựa trên cột FK đó, một chỉ mục sẽ giúp ... Một lần nữa, điều này không liên quan gì đến ràng buộc khóa ngoài trên cột đó.
Nguồn
2008-11-10 20:35:36
Tất cả các bằng chứng dường như không trỏ đến chỉ mục tự động trên Table1Column. Đã tạo chỉ mục bình thường mà không cần SQL Server phàn nàn. –
Văn bản được trích dẫn để làm gì với câu hỏi hoặc câu lệnh đó không được tạo tự động? – John