2010-09-25 37 views

Trả lời

23

Phần duy nhất không phải là nơi có sự khác biệt. Chỉ mục và khóa không giống nhau và không thể so sánh được.

Khóa là cột dữ liệu hoặc một số cột, buộc phải là duy nhất với ràng buộc, khóa chính hoặc bị từ chối rõ ràng ràng buộc duy nhất. Trong khi đó chỉ mục là cấu trúc để lưu trữ vị trí dữ liệu để truy xuất nhanh hơn.

Từ các tài liệu:

Unique Index

Tạo một chỉ số duy nhất trên một bảng hoặc xem. Chỉ mục duy nhất là chỉ mục duy nhất trong đó không có hai hàng nào được phép có giá trị khóa chỉ mục giống nhau là . Một nhóm chỉ mục trên một cái nhìn phải là duy nhất

Unique key (Constraint)

Bạn có thể sử dụng các ràng buộc UNIQUE để làm chắc chắn rằng không có giá trị trùng lặp là nhập vào cột cụ thể mà làm không tham gia vào một chính Chìa khóa. Mặc dù cả hai một hạn chế UNIQUE và một hạn chế PRIMARY KEY thực thi độc đáo, sử dụng một hạn chế UNIQUE thay vì một KEY constraint TIỂU khi bạn muốn thực thi các độc đáo của một cột, hoặc kết hợp các cột, đó không phải là khóa chính .

19

Điều này MSDN article comparing the two is what you're after. Thuật ngữ là như vậy mà "hạn chế" là ANSI, nhưng trong SQL Server bạn không thể vô hiệu hóa một ràng buộc duy nhất ...

Đối với hầu hết các mục đích, không có sự khác biệt - ràng buộc được thực hiện như một chỉ mục trong trang bìa. Các bài viết MSDN sao này lên - sự khác biệt là ở các siêu dữ liệu, cho những thứ như:

  • tinh chỉnh fillfactor
  • BAO GỒM NHỮNG SỰ cung cấp chỉ số hiệu quả hơn bao phủ (hạn chế composite)
  • Một chỉ số lọc giống như một ràng buộc đối với một tập hợp con các hàng/bỏ qua nhiều số không, v.v.
+1

"hạn chế được thực hiện như một chỉ số dưới tấm chăn" - hoàn toàn đúng, và nó sẽ là bất khả thi để thực thi một cách hiệu quả không có chỉ mục trong mọi trường hợp. – DaveBoltman

2

"Khóa duy nhất" là một thuật toán. Chìa khóa (AKA "Candidate Key") là tính năng logic của cơ sở dữ liệu - một ràng buộc thực thi tính duy nhất của một tập các thuộc tính trong một bảng.

Chỉ mục là tính năng mức vật lý nhằm tối ưu hóa hiệu suất theo một cách nào đó. Có nhiều loại chỉ mục.

-1

Khóa duy nhất: Đây là hạn chế áp đặt giới hạn trên cơ sở dữ liệu. Giới hạn đó là nó sẽ không cho phép các giá trị trùng lặp. Ví dụ: nếu bạn muốn chọn một cột làm khóa chính, nó KHÔNG phải là NULL & UNIQUE.

Chỉ mục duy nhất: Đây là chỉ mục giúp cải thiện hiệu suất trong khi thực hiện truy vấn trên cơ sở dữ liệu của bạn. Trong chỉ mục duy nhất nó cũng không cho phép các giá trị trùng lặp trong chỉ mục. ie.no hai hàng sẽ có cùng giá trị khóa chỉ mục.

0

Cả khóa (cũng như từ khóa) và chỉ mục là số nhận dạng của hàng trong bảng.
Mặc dù chỉ mục là cấu trúc nhận dạng song song, có chứa một con trỏ đến hàng được xác định, trong khi các phím nằm trong các thành viên trường situ.

Khóa, như số nhận dạng, ngụ ý tính duy nhất (ràng buộc) và NOT NULL (ràng buộc). Không có ý nghĩa trong NULL là định danh (như null không thể xác định bất cứ điều gì) cũng như giá trị nhận dạng nonunique.
Chỉ mục không nhóm có thể chứa dữ liệu thực, không phân phát dưới dạng số nhận dạng cho dữ liệu thực và do đó không phải là duy nhất [1]

Thật không may là khóa hoặc chỉ mục (số nhận dạng) được gọi bằng ràng buộc (quy tắc hoặc hạn chế) những gì hầu hết các câu trả lời trước đây ở đây đều theo sau.

phím được sử dụng trong bối cảnh:

  • thay thế phím ứng cử viên aka aka thứ cấp, có thể có nhiều
  • chìa khóa composite (một vài lĩnh vực kết hợp)
  • khóa chính (superkey), tự nhiên hoặc thay thế chủ chốt, chỉ có một, thực sự sử dụng cho toàn vẹn tham chiếu
  • nước ngoài chủ chốt

chính nước ngoài là chìa khóa trong một bảng khác (nơi đó là khóa chính) và thậm chí không phải là khóa mà họ thường xuyên tham chiếu. Việc sử dụng như vậy được giải thích bằng cách rút ngắn thuật ngữ "hạn chế khoá ngoại" thành "khóa ngoại".

Ràng buộc khóa chính thực sự ngụ ý ràng buộc NOT NULL và UNIQUE + cột được tham chiếu (hoặc cột kết hợp) là số nhận dạng và cũng không may thay thế bằng "khóa chính" hoặc "ràng buộc khóa chính" trong khi cả hai không thể gọi ràng buộc chỉ (khóa chính) hoặc chỉ bằng khóa (chính).


Cập nhật:
câu hỏi có liên quan của tôi:
[1]
UNIQUE argument for INDEX creation - what's for?

Các vấn đề liên quan