mysql에서 복합 기본 키의 INDEX는 어떻습니까?


12

둘 이상의 열에 대해 복합 기본 키를 만드는 경우, 예를 들어 PRIMARY KEY(col1, col2, col3); 시스템은 INDEX각 열을 개별적으로 수행합니까?

이 질문을하는 이유는 우리가 사용할 때 첫 번째 열에서만 UNIQUE INDEX (col1, col2, col3)작동하고 다른 열에 대해 INDEX추가를 생성해야하기 때문 INDEX입니다. 복합 기본 키의 경우인지 알고 싶습니다.

답변:


16
  1. 복합 기본 인덱스는 항상 col1, col2, col3 값의 조합이 고유하다는 것을 보장합니다. 색인의 목적이 값이 고유한지 확인하는 것이라면

  2. 복합 인덱스는 열 col1, col2 및 col3의 모든 조합에서 인덱스 일치를 제공합니다.

  3. 다른 열이없는 열을 사용하여 조인하거나 필터링하는 경우 col2 및 col3에 별도의 인덱스를 만듭니다.

  4. 나는 항상 비즈니스 관계가없는 숫자 기본 키와 필요한 경우 복합 기본 키에 대한 고유 인덱스를 선호합니다.


1
좋은 포인트! 그런 다음 복합 기본 키는 UNIQUE INDEX와 유사하며 행을 빠르게 가져 오기 위해 2, 3, ... 열에 대한 색인이 없습니까?
Googlebot

1
@ssmusoke 3 번의 생략 col1에서 a SELECT * WHERE col1 = 10가 효율적 이라고 가정 할 수 있습니까 ?
Andy

2
@Andy # 3은 col1, col2 및 col3의 복합 색인에 추가되므로 복합 색인이 사용됩니다. 그러나 col2 및 col1없이 col3에 대한 필터를 수행하는 경우 각각에 대해 별도의 색인이 필요합니다.
Stephen Senkomago Musoke

3
col1, col2 및 col3에 색인이 있다는 것은 col1이 색인의 첫 번째 열이기 때문에 SELECT * FROM col1 = 10이 효율적임을 의미하므로 # 3을 사용하면 col2와 col3에 대해 동일한 작업을 수행 할 수 있습니다. col1없이 해당 열만으로 필터링하면 열도 색인화됩니다.
Stephen Senkomago Musoke

2
@PaulWasilewski 예, 복합 기본 키가 의미가있는 특별한 경우가 있지만 특별한 경우입니다.
Stephen Senkomago Musoke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.