2010-05-17 2 views
3

MySQL에서 하나의 테이블에 대해 얼마나 많은 인덱스가 선호됩니까 ??데이터베이스 테이블 당 얼마나 많은 인덱스가 있습니까?

ID, statecategory을 주로 검색하는 테이블이 company입니다.

+1

이 테이블에서 어떤 종류의 쿼리를 실행 하시겠습니까? 삽입, 업 그레 이드, 선택, 삭제? –

+0

자세한 내용이 도움이 될 것입니다. 우리는 ID가 아마도 ID와 카테고리의 조합이 아닌 기본 키일 것이라고 추측해야합니다 (전적으로 가능합니다). 스키마를 게시하면 더 좋은 아이디어를 얻을 수 있습니다. – wlangstroth

+0

"FOR"id, state, cat을 검색하거나 "BY"로 검색하십시오. 나에게 "FOR"는 그들이 선택 목록에 있음을 의미합니다. 예 : 아티스트별로 노래를 검색합니다. BY가 where 절에 있습니다. –

답변

5

이 질문에 대한 대답은 하나도 없습니다. 쿼리를 충분히 빨리 수행하기 위해 많은 인덱스를 작성해야합니다.

당신이 결정할 때 여러 가지 절충이 인덱스에 무엇을 : 당신이

  • 더 많은 인덱스 (그들은 모든 인덱스를 업데이트해야하기 때문에), 느린 삽입 및 업데이트
  • 될 것입니다 적절한 인덱스가없는 테이블에 대한 쿼리 은 데이터베이스가 테이블 스캔을 수행해야하는 경우 매우 느릴 수 있습니다.
  • 일부 열은 인덱스가 필요하지 않습니다 (예 : 가능한 유일한 값이 "M"인 '성별'열) 또는 "F")

특정 시나리오의 경우 3 개의 인덱스 (ID (기본 키인 경우 암시 적 인덱스가있는 경우), 주 하나와 카테고리 중 하나) 만 있으면 충분합니다.

+0

나는 주 (State) 또는 카테고리 (Category)가 그들 자신에게 유용 할 것임을 의심한다. 그러나 카디널리티 없이는 알 길이 없습니다. 그들이 50 개 주 (53 개) 모두에서 사업을한다면 아마 그 인덱스를 통해 테이블의 1-5 %를 얻게 될 것입니다.하지만 주로 10 개 주에서 비즈니스를 수행하는 지역 비즈니스라면 충분하지 않을 것입니다 유용한 클러스터링 요소. –

0

인덱스의 "기본"수가 없으며 모두 쿼리에 따라 다릅니다. 귀하의 예에서는 ID, 상태 및 카테고리에 대해 3 개 이상의 색인이 필요하지 않습니다.

관련 문제