>  Q&A  >  본문

innodb가 보조/비클러스터형 인덱스에 행 포인터를 저장하지 않는 이유는 무엇입니까?

우리 모두 알고 있듯이 innodb는 보조 인덱스에만 기본 키 값을 저장합니다. 즉, 행 레코드를 얻으려면 클러스터형 인덱스 B+ 트리를 다시 탐색해야 합니다.

추가 조회 작업을 줄이기 위해 행 포인터를 보조 인덱스에 직접 저장하면 어떨까요?

P粉038161873P粉038161873404일 전549

모든 응답(1)나는 대답할 것이다

  • P粉469090753

    P粉4690907532023-09-12 16:06:28

    "행 포인터"가 없습니다. PRMARY KEY의 열에는 데이터의 BTree에서 행을 찾는 기능이 있습니다.

    물론 PK를 통한 조회는 "행 포인터"보다 느릴 수 있습니다. 그러나 업데이트, 삭제, 블록 분할 등은 모두 자동으로 처리됩니다. (Bill의 의견을 참조하세요.) 이렇게 하면 코드가 더 단순해집니다. 그리고 어떤 경우에는 더 빠릅니다.

    더 빠르고 간단한 예: 주어진

    으아악

    이 예에서는 인덱싱된 BTree에 완전한 답이 있습니다. 데이터 BTree에 액세스할 필요가 없습니다. 따라서 이 색인을 이 SELECT의 "표지"라고 합니다.

    회신하다
    0
  • 취소회신하다