Sẽ có bất kỳ sự khác biệt nào về hiệu suất nếu bạn so sánh một truy vấn tìm nạp dữ liệu thông qua liên kết giữa hai bảng trong đó có mối quan hệ với một trong hai điều sau đây:
- Khóa chính
- Một chỉ mục duy nhất
Sẽ có bất kỳ sự khác biệt nào về hiệu suất nếu bạn so sánh một truy vấn tìm nạp dữ liệu thông qua liên kết giữa hai bảng trong đó có mối quan hệ với một trong hai điều sau đây:
Câu trả lời:
Nó không có gì để làm với hiệu suất như vậy, nhưng nó là một vấn đề khái niệm.
Sử dụng CONSTRAINT ĐỘC ĐÁO để nêu thực tế. Ví dụ, sử dụng UNIQUE INDEX khi bạn có một chỉ mục duy nhất là duy nhất bởi vì bạn thêm khóa chính cho nó.
Theo kịch bản:
Khóa chính
Khóa duy nhất
Ghi chú:
Cả hai có thể được nhóm hoặc không cụm. Khi bạn tạo một ràng buộc, bạn được phép chọn loại chỉ mục bạn muốn sử dụng cho các khóa này.
Nguồn:
http://social.msdn.microsoft.com/Forums/en/transactsql/thread/290619be-b892-4f52-99e0-d8e2ff80aec4
http://bytes.com/topic/sql-server/answers/83999-unique-constraint-vs-unique-index-ms-sql-2000-a
Tôi không chắc câu hỏi của bạn có đủ thông tin để đưa ra câu trả lời hay không. Việc PK / UI được phân cụm hay không phân cụm thường là yếu tố hiệu suất vượt trội khi tham gia kết quả bao gồm các trường không phải là một phần của các chỉ mục .
Có thể chỉ có một chỉ mục được nhóm trên một bảng tại một thời điểm. Theo mặc định, PK được nhóm. Tuy nhiên, nếu một chỉ mục được nhóm tồn tại trước khi PK được tạo thì PK sẽ không bị tách rời (không bình thường).
Vì vậy, trong hầu hết các trường hợp, vì UI sẽ được tạo sau PK, nên UI sẽ không được phân cụm và do đó chậm hơn khi kết quả tham gia cần bao gồm các trường không có chỉ mục từ hàng. So sánh, nếu một giao diện người dùng được tạo thay vì PK thì hiệu suất được dự kiến sẽ tương đương với một cụm được phân cụm.
Cũng có thể tạo các chỉ mục với các cột "bao gồm". Điều này xoay quanh vấn đề phân cụm vì nó cho phép kết quả tham gia sử dụng các cột được bao gồm mà không phải tìm nạp vật lý (vì hàng nằm ở một vị trí khác khi không được phân cụm).