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.