색인 메커니즘

3280 단어
전체 값 은 내 가 가장 좋아 하 는 것 과 일치 합 니 다. 가장 왼쪽 접 두 사 는 지 켜 야 합 니 다.앞장 서 는 형 제 는 죽 을 수 없고 중간 형 제 는 끊 을 수 없다.색인 열 에 계산 을 적 게 하고 범위 후에 모두 효력 을 잃 습 니 다.like 100% 왼쪽 을 쓰 고 색인 을 덮어 쓰 고 별 을 쓰 지 않 습 니 다.빈 값 과 or 를 기다 리 지 않 고 색인 이 효력 을 잃 으 면 적 게 사용 해 야 합 니 다.
색인 정의
데이터 구조의 선택
1 이 진 트 리 찾기
  • 결함
  • 기형 프로 그래 밍 선형 구 조 는 전체 표 스 캔
  • 에 해당 한다.

    2 균형 찾기 이 진 트 리
  • 서브 노드 의 높이 차 이 는 1 을 초과 할 수 없고 회전 유지 균형
  • 결함
  • 검색 효율 부족
  • 일반적으로 나무 구조 에서 데이터 의 깊이 가 검색 할 때 IO 횟수 를 결정 한다. 이 나 무 는 키 가 크 고 키 가 크 며 등급 이 너무 깊다
  • .
  • 노드 데이터 내용 이 너무 적다.
  • 디스크 블록 (노드 / 페이지) 마다 저 장 된 키워드 데이터 의 양 이 너무 적다
  • 운영 체제 와 디스크 의 데이터 상호작용 특성 과 디스크 예 독 력 (공간 국부 적 원리) 을 잘 이용 하지 못 했 고 단 위 는 페이지, 4K
  • 이다.


    B 트 리 (다 중 균형 찾기 트 리)
  • 균형 이 잡 힌 이 진 트 리 의 결함 을 해결 하고 뚱뚱 하 다
  • 강화 판 다 중 균형 찾기 트 리 - B + 트 리
  • B + 노드 키워드 검색 은 닫 힌 구간
  • 을 사용 합 니 다.
  • B + 비 엽 노드 는 데이터 관련 정 보 를 저장 하지 않 고 키워드 와 하위 노드 의 인용 만 저장 합 니 다
  • B + 키워드 에 대응 하 는 데 이 터 는 잎 노드 에 저 장 됩 니 다
  • B + 잎 노드 는 순서대로 배열 되 고 인접 노드 는 순서대로 인용 하 는 관 계 를 가진다 (표 작성 능력 이 강하 고 정렬 능력)
  • Mysql 에서 B + Tree 색인 구현 형식 - my sam
  • teacher.MYI
  • teacher.MYD
  • 색인 은 구체 적 인 데이터 의 주 소 를 가리킨다

  • Mysql 에서 B + Tree 색인 구현 형식 - Innodb
  • teacher.IBD
  • 메 인 키 를 색인 으로 데이터 저장
  • 집합 색인
  • 데이터베이스 테이블 에서 데이터 의 물리 적 순서 와 키 값 의 논리 (인덱스) 순서 가 같다
  • 보조 색인 은 메 인 키 색인 을 가리 키 고 있 습 니 다 (색인 진동 을 방지 하기 위해 메 인 키 색인 만 유지 하면 됩 니 다)


  • 색인 의 몇 가지 원칙
  • 열의 이산 성 (성별 은 남녀 만 있 고 이산 성 이 낮 으 며 좋 지 않 으 며 전체 표 스 캔 보다 못 하 다)
  • 최 좌 일치 원칙 및 점프 불가
  • 연합 색인: 자주 사용 하 는 열 우선 (최 좌 일치 원칙) > 이산 도 높 은 열 우선 (이산 도 높 은 원칙) > 너비 가 작은 열 우선 (최소 공간 원칙)
  •   1
    
    select * from users where name = ?;
    select * from users where name = ? and phoneNum = ?;
    
        
    
    create index idx_name on users(name);
    create index idx_name_phoneNum on users(name,phoneNum);
    
      :        ,         
    

    겹 쳐 쓰기 인덱스
    검색 한 열 이 색인 항목 의 정 보 를 통 해 직접 되 돌아 갈 수 있다 면 이 색인 을 검색 SQL 의 덮어 쓰기 색인 이 라 고 합 니 다.
     :teacher
      :PK(id) key(name,phoneNum) unique(teacherNo)
    
      SQL       ?
    
    select teacherNO from teacher where teacherNo = ?;
    yes	teacherNo         teacherNo    
    
    select id,teacherNo from teacher where teacherNo = ?;
    yes teacherNo             id,     id
    
    select name,phoneNum from teacher where teacherNo = ?;
    no teacherNo         name
    
    select phoneNum from teacher where name = ?; 
    yes          name,          phoneNum
    

    이것들 을 당신 은 원리 층 에서 이 해 했 습 니까?
  • where 조건 에서 like 는 왜 왼쪽 시작 을 제외 하고 색인 을 사용 하지 못 합 니까?이산 도가 너무 낮 아서
  • where 조건 에서 not in 과 < > 조건 은 색인 을 사용 할 수 없 습 니까?네, 그런데 < > 메 인 키 가 사 용 됩 니 다. 이 유 는 모 르 겠 습 니 다
  • 함수 가 색인 실 효 를 초래 할 수 있 습 니 다
  • 연합 색인
  • 연합 색인 에서 색인 맨 왼쪽 열 에 따라 찾 지 않 으 면 색인 을 사용 할 수 없습니다
  • 연합 색인 에서 가장 왼쪽 열 과 범위 가 다른 열 과 일치 하면 색인
  • 을 사용 할 수 있 습 니 다.
  • 연합 색인 에서 검색 에 열 범위 가 있 으 면 오른쪽 에 있 는 모든 열 은 색인 을 사용 할 수 없습니다
  • .

    좋은 웹페이지 즐겨찾기