>  기사  >  데이터 베이스  >  MySQL 인덱스란 무엇입니까? mysql 인덱스에 대한 간략한 토론

MySQL 인덱스란 무엇입니까? mysql 인덱스에 대한 간략한 토론

青灯夜游
青灯夜游앞으로
2018-11-22 15:15:493677검색

이 기사에서는 mysql 인덱스가 무엇인지 설명합니다. 누구나 mysql 인덱스에 대해 쉽게 이해할 수 있도록 mysql 인덱스에 대해 간략하게 이야기해 보겠습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

One: 인덱스란 무엇입니까

인덱스 자체는 데이터 테이블의 필드와 해당 필드에 해당하는 물리적 공간이 기록되는 독립적인 저장 단위입니다. 인덱스 내부에는 알고리즘 지원이 있어 쿼리 속도가 매우 빨라집니다. [추천 관련 영상 튜토리얼: mysql 튜토리얼]

인덱스를 사용하면 인덱스를 조건으로 데이터를 쿼리할 수 있고 속도도 매우 빠르다

  1.인덱스 자체가 다음을 지원한다. 빠르게 위치를 지정할 수 있는 "algorithm" 우리가 찾고자 하는 키워드(필드)

 2. 인덱스 field물리적 주소와 직접적인 대응을 갖고 있어 우리가 원하는 정보를 빠르게 찾는 데 도움이 됩니다. want to find

데이터 테이블의 모든 필드를 인덱싱할 수 있습니다

두 번째, 인덱스 유형

1, 네 가지 유형:

(1) 기본 키 기본 키

auto_increment는 기본 키에 대해 설정되어야 합니다. index, 인덱스 컬럼의 값은 null이 아니어야 하고, 고유해야 합니다

(2) Unique Unique Index

인덱스 컬럼의 값은 중복될 수 없으나, Null 값은 허용됩니다

(3) 값 일반 인덱스 인덱스

인덱스 열의 반복이 가능합니다.

(4) 전체 텍스트 인덱스

Myisam 데이터 테이블에서 이 인덱스를 설정할 수 있습니다.

2. 복합 인덱스

인덱스는 두 개 이상의 열로 구성되며 이를 복합 인덱스 또는 조인트 인덱스라고 합니다.

셋, 인덱스 생성

1, 테이블 생성 시

1), 멤버 테이블 생성 시 다양한 인덱스를 생성합니다.

create table member(
  id  int not null auto_increment comment '主键',
  name char(10) not null default '' comment '姓名',
  height tinyint not null default 0 comment '身高',
  old tinyint not null default 0 comment '年龄',
  school varchar(32) not null default '' comment '学校',
  intro text comment '简介',
  primary key (id),  // 主键索引
  unique index nm (name), //唯一索引,索引也可以设置名称,不设置名字的话,默认字段名
  index (height),   //普通索引
  fulltext index (intro) //全文索引
)engine = myisam charset = utf8;

2), 기존 데이터 테이블에 인덱스 추가

//注:一般设置主键后,会把主键字段设置为自增。(alter table member  modify id  int not null auto_increment comment '主键';)
alter table member add primary key(id); 
alter table member add unique key nm (name);
alter table member add index(height);
alter table member add fulltext index(intro);

3), 복합 인덱스 생성(인덱스에는 이름이 없으며 첫 번째 필드는 기본적으로 이름으로 가져옴)

alter table member add unique key nm (name,height);

2, 인덱스 삭제

alter table 表名 drop primary key;//删除主键索引

참고:

이 기본 키 필드에 auto_increment 속성이 있는 경우 먼저 삭제해야 합니다. (테이블 테이블 이름 변경 null 주석 '기본 키'가 아닌 int)

데이터 테이블 필드의 auto_increment 속성을 제거합니다.

alter table 表名 drop  index 索引名称;  //删除其它索引(唯一,普通,全文)

예:

alter table member drop index nm;

4. 을 사용합니다

특정 작업: explain sql 문 쿼리

기본 키 인덱스를 설정하지 않은 상황: (실행 속도 및 효율성이 낮음)

기본 키 추가 후:

5. 인덱스가 적합한 시나리오

1. Where 쿼리 조건(Where 뒤에 설정된 쿼리 조건 필드가 인덱싱에 적합함).

2. 쿼리 정렬(필드별 정렬)

6. 인덱스 원칙

1. 필드 독립 원칙

select * from emp where empno = 1325467;//empno条件独立,使用索引
select * from emp where empno+2 = 1325467;//empno条件不独立,只有独立的条件字段才可以使用索引

2, 퍼지 쿼리, like & _

   % :여러 개의 퍼지 콘텐츠 연결

 _:하나의 퍼지 콘텐츠 연결

예:

select * form 表名 where a like "beijing%";//使用索引
select * from 表名 where a like "beijing_";//使用索引
select * from 表名 where a like "%beijing%”;//不使用索引
select * from 表名 where a like "%beijing";//不使用索引

3, 복합 인덱스 인덱스(a,b)

 

select * from 表名 where a like "beijing%";//使用索引
select * from 表名 where b like "beijing%;//不使用索引
select * form 表名 where a like "beijing%" and b like "beijng%";//使用索引
4, 또는 원리

OR 등. 조건은 반드시 인덱스이어야 합니다. 인덱스는 모두 인덱스가 있는 경우에만 사용할 수 있습니다.

예: (index(a), index(b)) 

select * from 表名 where a = 1 or b = 1;//使用索引
select * from 表名 where a = 1 or c = 1;//没有使用索引

요약:

위 내용은 이 글의 전체 내용이므로, 모든 분들의 학습에 도움이 되기를 바랍니다.

위 내용은 MySQL 인덱스란 무엇입니까? mysql 인덱스에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제