나는 다음과 직면하고 있으며 무엇이 가장 좋은지 잘 모르겠습니다.두 개의 단일 열 인덱스와 MySQL의 두 개의 열 인덱스가 하나입니까?
다음 표를 고려해보십시오 (큰 크기입니다) :
id PK | giver_id FK | recipient_id FK | date
InnoDB를 사용하고 있으며 이해할 수있는대로 두 개의 외래 키 열에 대한 인덱스가 자동으로 생성됩니다. 그러나 특정 조합 (예 :
SELECT...WHERE giver_id = x AND recipient_id = t
)을 일치시켜야하는 많은 쿼리를 수행 할 것입니다.
각 조합은 표에서 고유합니다.
이 열에 2 열 인덱스를 추가하면 어떤 이점이 있습니까? 아니면 이론상 두 개의 개별 인덱스가 충분합니까? 동일합니까?
'MySQL은 SELECT 당 하나의 색인 만 사용할 수 있습니다.'이것은 더 이상 사실이 아니며, 답변을 편집하여 편집하면 좋을 것입니다. – Davor
왜 커버 링 인덱스가'recipient_id '에 의해 사용되지 않을지 설명해 주시겠습니까? –
@IvoPereira MySQL의 다중 열 인덱스를 사용하면 인덱스의 모든 필드를 왼쪽에서 오른쪽으로 사용할 수 있습니다. 예를 들어'INDEX (col1, col2, col3, col4)'를 가지고 있다면 'col1 ='A '' 나'col1 = 'A'AND col2 = 'B'또는 'col1 ='A 'AND col2 ='B 'AND col3 ='C 'AND col4 ='D ''그러나이 특정 인덱스는 WHERE col2 ='B ' '또는'WHERE col3 = 'C'AND col4 = 'D''검색 필드가 인덱스 정의에서 가장 많이 남지 않기 때문입니다. 이러한 필드를 포함하기 위해 추가 색인을 추가해야합니다. – Slicktrick