MySQL- 인덱스 관리 및 실행 계획

I. 서론 색인

1.1 인덱스 액션

, 목적은 쿼리를 최적화하기 위해 책 디렉토리에서 비슷한 역할을 제공

1.2 인덱스 분류 알고리즘

넓은 카테고리 :

B 트리 인덱스 
해시 인덱스 
R 트리 
전체 텍스트 
GIS 기반의지도 인덱스 #의 
------------------------------- 

다른 기반으로 #B 나무 카테고리 검색 알고리즘 : 
B-트리 
두 가지 유형의 쿼리 용어의 범위에서 더 나은 성능 (> <> = <=)를 제공 
+ 트리 B    
B * 트리

1.3 인덱스 기능에 대한 분류

1.3.1 보조 인덱스

1) 보조 인덱스는 (S)는 어떻게 B-트리 구조를 구축?

  • (1) B는 트리 구조가 생성되는 색인 테이블 열 값 (키 인덱스)을 기반으로
  • (2) 제 자동 정렬이 열의 모든 값을 추출
  • (3) 지수 트리의 리프 노드에 분배 균일 순서화 행의 값 (16K)
  • (4) 다음 데이터 페이지의 후단에 대응하는 포인터를 획득하기 위해 상기 인덱스 키 생성
  • (5) 상기 분기 노드 및 루트 노드를 생성하는 적절한 인덱스 트리 높이를 생성, 데이터 길이 및 인덱스 키의 순서에 따라

영상

2) 보조 인덱스 세분

  • 1) 일반 단일 보조 인덱스 ( 일반 인덱스 )
  • 2) 인덱스 커버 (관절 인덱스), 인덱스 조건으로 하나 이상의 열을 이론적 트리 인덱스를 생성하는 양호한 디자인 백 테이블 쿼리의 양을 감소시킬 수있다
  • 3) 고유 인덱스 : 색인 열 값이 고유.

1.3.2, 클러스터 된 인덱스

1) 전제

  • (1) 테이블에 제공되는 기본 키, 기본 키 컬럼 자동 집계로 인덱싱된다.
  • 기본 키가없는 경우 (2), 선택 고유 키 클러스터 된 인덱스로합니다.
  • (3) 테이블의 구성은, 테이블의 열, 일반적으로 독립 인 경우에만 클러스터 인덱스 (ID) 의미 있어야

2) 클러스터 된 인덱스 (C) 방법 B-트리 구조를 구축?

  • (1) 구성 테이블의 기본 키 컬럼 (ID)를 설정
  • 데이터를 입력 할 때 (2), 미래의 주문 ID 열에서 디스크에 저장됩니다. (우리는 그것을 호출 클러스터 인덱스 구성 테이블 )
  • 리프 노드를 생성 한 데이터 (3)에 정렬된다 전체 행으로 이해 될 수있는 디스크 데이터 페이지하면 잎 노드

1.3.3 인덱스 높은 충격 요인

1) 정도의 데이터 , 용액 : 서브 테이블은 서브 - 라이브러리는, 분산

프리픽스 인덱스 2) 열 인덱스 값은, 용액 너무 길어

3) 데이터 유형 :

가변 길이 문자열의 길이, 문자의 사용, 솔루션 : 가변 길이 문자열 VARCHAR의 사용

열거를 사용하여 열거 유형 ( '산', '허베이', '흑룡강', '길림', '랴오닝', '산시'...)

1.3.4, B 트리 검색 알고리즘

영상

영상

영상

둘째, 기본 관리 지표

2.1 인덱스를 참조

mysql> desc city;
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| ID          | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name        | char(35) | NO   |     |         |                |
| CountryCode | char(3)  | NO   | MUL |         |                |
| District    | char(20) | NO   |     |         |                |
| Population  | int(11)  | NO   |     | 0       |                |
+-------------+----------+------+-----+---------+----------------+
Field :列名字
key   :有没有索引,索引类型
	  PRI: 主键索引
	  UNI: 唯一索引 
	  MUL: 辅助索引(单列,联和,前缀)

mysql> show index from city;
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name    | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| city  |          0 | PRIMARY     |            1 | ID          | A         |        4188 |     NULL | NULL   |      | BTREE      |         |               |
| city  |          1 | CountryCode |            1 | CountryCode | A         |        4188 |     NULL | NULL   |      | BTREE      |         |               |
+ ------- + ------------ + ------------- + -------------- + ------------- + ----------- + ------------- + --------- - + -------- + ------ + ------------ + --------- + --------- ------ +

2.2, 인덱스 생성은 삭제, 수정

1) 인덱스를 작성

테이블 도시 인덱스 idx_name (이름)을 추가 변경; #方法一
도시에 인덱스 idx_name1를 생성 (이름); #方法二
도시에서 공연 지수;

2) 삭제 색인

표시 드롭 지수 idx_name1을 변경 #가 인덱스 이름을 삭제

3) 피복 률 ( 조인트 인덱스)

테이블 도시 키 idx_co_po (COUNTRYCODE 추가 alter입니다 , 인구) 여러 필드에 # 지수는 
테이블 도시 인덱스 idx_co_po (COUNTRYCODE 추가 변경 , 인구) 여러 필드 #을에 인덱스를

4) 프리픽스 인덱스

테이블 도시 인덱스 idx_di을 추가 변경 (지구 (5)); # 5 자 인덱스 앞

5) 고유 인덱스

고유 인덱스 idx_uni1 (이름)을 추가 테이블 도시를 변경하는 행위 

ERROR 1062 (23000) :唯一键冲突키 'idx_uni1'#에 대한 중복 항목을 '산호세'

추천

출처www.cnblogs.com/hujinzhong/p/11634743.html