2010-03-10 38 views
8

trong MySQL, Nếu tôi tạo ra một chìa khóa duy nhất trên hai cột, nóimysql khóa duy nhất và chỉ số

UNIQUE KEY my_key (column1, column2)

là nó cần thiết để xây dựng một phím trên column1? Mục tiêu của tôi là có cột 1 và cột 2 là duy nhất và tôi sẽ thực hiện rất nhiều lựa chọn được khóa bằng cột1.

+1

chỉ thực hiện thử nghiệm bằng cách sử dụng GIẢI THÍCH, có vẻ như tôi không phải tạo một khóa khác trên cột 1, vì mysql sẽ sử dụng khóa duy nhất khi thực hiện chọn khóa bằng cột1. – Beier

Trả lời

11

Không, không cần thiết vì chỉ mục trên (cột1, cột2) có thể được sử dụng thay vì chỉ mục của cột 1.

Bạn có thể muốn tạo chỉ mục mới chỉ trên cột hai mặc dù chỉ mục (cột1, cột2) không tốt khi chỉ tìm kiếm (cột2).

8

Không, chỉ số my_key của bạn sẽ xử lý mọi truy vấn trên column1 hoặc điều kiện trên column1column2. Tuy nhiên, nếu bạn thực hiện truy vấn chỉ trên column2, thì bạn nên thêm chỉ mục bổ sung cho column2 để có thể truy vấn hiệu quả.

Hơn nữa, nếu cả hai column1column2 là duy nhất, sau đó bạn có thể muốn xem xét sử dụng một cái gì đó giống như

[...] 
UNIQUE(column1), 
UNIQUE(column2), 
PRIMARY KEY (column1, column2); 

Điều này đảm bảo rằng cả hai column1column2 là duy nhất, và bất kỳ truy vấn chỉ chọn column1column2 có thể được truy xuất bằng quyền truy cập chỉ mục.

2

Chỉ số UNIQUE là btree-index. Chỉ mục này được sắp xếp và đó là lý do tại sao bạn không cần chỉ mục thứ hai trên cột đầu tiên. Thứ tự sắp xếp của kết hợp cũng sẽ chỉ hoạt động cho cột đầu tiên, nhưng không chỉ cho cột thứ hai.

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