INDEX trên Khóa chính tổng hợp trong mysql như thế nào?


12

Khi tạo khóa chính tổng hợp cho hai hoặc nhiều cột, vd PRIMARY KEY(col1, col2, col3); hệ thống INDEXsẽ từng cột riêng lẻ?

Lý do mà tôi hỏi câu hỏi này là khi chúng ta sử dụng UNIQUE INDEX (col1, col2, col3), nó chỉ hoạt động như INDEXđối với cột đầu tiên và chúng ta cần tạo thêm INDEXs cho các cột khác. Tôi muốn biết nếu đó cũng là trường hợp cho Khóa chính tổng hợp.

Câu trả lời:


16
  1. Chỉ số chính tổng hợp sẽ luôn đảm bảo rằng sự kết hợp của các giá trị col1, col2, col3 là duy nhất. Nếu mục đích của chỉ mục là đảm bảo rằng các giá trị là duy nhất thì bạn sẽ đạt được điều đó

  2. Một chỉ mục tổng hợp cũng cung cấp các kết quả khớp chỉ mục trên bất kỳ sự kết hợp nào của các cột col1, col2 và col3

  3. Bạn sẽ tạo các chỉ mục riêng biệt trên col2 và col3, nếu bạn tham gia hoặc lọc bằng bất kỳ cột nào mà không có các cột khác.

  4. Tôi luôn thích khóa chính số (không có liên kết kinh doanh) và các chỉ mục duy nhất trên khóa chính tổng hợp khi cần thiết.


1
điểm tốt! sau đó, khóa chính tổng hợp tương tự như UNIQUE INDEX và chúng tôi không có chỉ mục cho các cột thứ 2, 3, ... để tìm nạp nhanh một hàng?
Googlebot

1
@ssmusoke Tôi có thể giả sử từ thiếu sót col1ở điểm 3 rằng a SELECT * WHERE col1 = 10sẽ hiệu quả không?
Andy

2
@Andy # 3 ngoài chỉ số tổng hợp gồm col1, col2 và col3 nên chỉ số tổng hợp sẽ được sử dụng. Tuy nhiên, nếu bạn thực hiện các bộ lọc trên col2 và col3 mà không có col1 thì bạn cần các chỉ mục riêng cho từng phần riêng lẻ
Stephen Senkomago Musoke

3
Có một chỉ mục trên col1, col2 và col3 có nghĩa là CHỌN * TỪ col1 = 10 sẽ hiệu quả, vì col1 là cột đầu tiên trong chỉ mục, vì vậy # 3 cho phép bạn làm tương tự cho col2 và col3, vì vậy nếu bạn lọc theo các cột đó mà không có col1 thì các cột cũng được lập chỉ mục
Stephen Senkomago Musoke

2
@PaulWasilewski vâng, thực sự có những trường hợp đặc biệt trong đó khóa chính tổng hợp có ý nghĩa, nhưng đó chỉ là những trường hợp đặc biệt.
Stephen Senkomago Musoke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.