2012-05-03 2 views
0

기본 질문과 보조 질문 간의 성능 차이는 무엇입니까? 이 차이를 일으키는 원인은 무엇입니까?기본 인덱스와 보조 인덱스 : 성능 차이

나는 주변에있어, 보조 인덱스가 다른 테이블에 저장되어있는 것을 보아서 모든 작업이 느려지는 것을 보았습니다.하지만이 성능 저하를 정당화하는 다른 이유가 있습니까?

고마워요

+0

다음 링크를 통해 이에 대한 몇 가지 정보를 얻을 수 있습니다. http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html, http://www.xaprb.com/블로그/2006/07/04/how-to-exploit-mysql-index-optimizations/및 http://stackoverflow.com/questions/4419499/mysql-nosql-help-me-to-choose-the-right- one-on-a/4421601 # 4421601 –

+0

고마워요! 이제 나는 그것들을 읽을 것이다. – satboy78

답변

4

클러스터 된 테이블은 "더미"부분없이 B - 트리 인 - 행이 클러스터링 인덱스 (기본 키)의 B-트리 구조에 직접 저장된다. B-Tree의 노드는 분할되거나 합쳐질 수 있으므로 실제 위치 또는 행이 변경 될 수 있으므로 보조 색인에서 행까지 간단한 "포인터"를 가질 수 없으므로 보조 색인에 전체 사본이 포함되어야합니다. 기본 색인 필드는 행을 안정적으로 식별 할 수 있습니다.

이는 Oracle, MS SQL Server에 해당하며 also true for InnoDB입니다.

  • ,
  • 캐시의 효율성을 낮추고,

    • 데이터 클러스터링을 절감 : 클러스터 테이블의 보조 인덱스를 의미

      힙 기반 테이블의 보조 인덱스보다 "오르게"입니다

    • 그리고 가장 중요한 것은 쿼리 성능에 영향을 미칩니다.
      • 보조 인덱스를 통한 쿼리 두 번째 검색을 피할 수있는 몇 가지 흥미로운 최적화가 있지만, InnoDB는 제 지식에 맞지 않습니다. 두 번째 조회 - 두 번째 색인을 통한 한 번의 조회는 "키"데이터를 찾고 한 번째는 기본을 통해 조회합니다. .
      • 반면에 2 차 인덱스는 자연스럽게 covers 개 필드이므로 전통적인 힙 기반 인덱스가 테이블 액세스를 필요로하는 곳에서는 두 번째 룩업을 피할 수 있습니다. 그러나 단순히 힙 기반 필드에 필드를 추가하여 힙 기반 인덱스에서 동일한 효과를 얻을 수 있습니다.

    Use The Index, Luke! 인용하자. "인덱스 구성 테이블의 장점과 클러스터 인덱스는 대부분 두 번째 인덱스가 필요하지 않습니다 테이블로 제한된다"

    MySQL은 스토리지 엔진과 독립적으로 클러스터링을 선택할 수 없기 때문에 수치 스럽습니다.

  • +1

    색인 사용에 대한 게시물. 루크! 아주 좋았어요. 클러스터링 인덱스 및 보조 인덱스에 대한 많은 아이디어를 제거했습니다. 감사! – MasterV