2010-07-29 1 views
6

MySQL에서 수동으로 테이블을 생성 할 때, 쿼리에 사용할 것으로 생각되는 각 필드에 인덱스를 하나씩 추가합니다.MySQL 인덱스 : 여러 개의 인덱스를 가지고있는 것과 하나의 멀티 필드 키를 가지고 있습니까?

나를 위해 테이블을 생성하기 위해 phpMyAdmin을 사용할 때 테이블 만들기 양식에서 색인을 선택하면 phpMyAdmin이 내 색인을 1 (내 기본 정보)에 결합합니다.

다른 점은 무엇입니까? 하나가 다른 것보다 낫습니까? 어떤 경우에?

감사합니다.

답변

8

이것은 실제로 쿼리에 따라 다릅니다. 일부 쿼리는 다중 열 인덱스를 더 잘 사용합니다. EXPLAIN은 당신의 친구입니다.

http://dev.mysql.com/doc/refman/5.6/en/explain.html

또한 아주 좋은 자원은 여기에 있습니다 :

http://dev.mysql.com/doc/refman/5.6/en/optimization-indexes.html

+0

아직 내 질문을 아직 작성하지 않았습니다 (설계 단계에서). 그래서 기본적으로 내 쿼리를 준비 할 때까지 인덱스를 가지고 있지 않다는 것을 말하고 있습니다 ... –

+1

일부 인덱스는 디자인 단계에서 생각하기가 쉽지만 대부분 쿼리를 만들 때 추가됩니다. – Mchl

12

어느 쪽도 특히 좋은 전략이지만, 내가 선택해야한다면 나는 여러 개의 단일 인덱스를 선택할 것입니다.

색인의 전체 접두사에서 모든 입력란을 사용하는 경우에만 색인을 사용할 수 있습니다. 색인 (a, b, c, d, e, f)이있는 경우 a 또는 ab 모두에서 필터링하는 쿼리에 대해서는 정상적으로 작동하지만 쿼리 필터링에만 쓸모가 없습니다 c에.

항상 최상의 색인을 선택하는 쉬운 규칙은 없습니다. 당신은 당신이 만들고있는 질의 유형을보고 그러한 특정 질의를 빠르게 할 수있는 색인을 선택해야합니다. 열의 순서를주의 깊게 생각하면 여러 개의 다른 쿼리에 유용 할 수있는 작은 수의 인덱스를 찾을 수 있습니다. 예를 들어 하나의 쿼리에서 ab을 모두 필터링하고 b에서만 필터링하는 다른 쿼리의 경우 (b, a)의 인덱스는 두 쿼리에서 모두 사용할 수 있지만 인덱스는 (a, b)는 그렇지 않습니다.

관련 문제