>  기사  >  데이터 베이스  >  mysql의 비클러스터형 인덱스란 무엇인가요?

mysql의 비클러스터형 인덱스란 무엇인가요?

coldplay.xixi
coldplay.xixi원래의
2020-06-29 16:17:322423검색

mysql의 비클러스터형 인덱스는 인덱스의 저장과 데이터의 저장이 분리되어 있다는 것입니다. 즉, 인덱스는 찾았으나 데이터가 발견되지 않으면 그에 따라 테이블을 다시 쿼리해야 합니다. 인덱스의 값, 즉 기본 키에 비클러스터형 인덱스를 보조 인덱스라고도 합니다.

mysql의 비클러스터형 인덱스란 무엇인가요?

mysql의 비클러스터형 인덱스는 다음과 같습니다.

인덱스의 저장소와 데이터의 저장소가 분리되어 있습니다. 즉, 인덱스는 찾았지만 데이터는 찾지 못한 경우, 인덱스의 값(기본 키)을 기반으로 다시 읽어야 합니다. 테이블 백 쿼리의 경우 비클러스터형 인덱스를 보조 인덱스라고도 합니다.

예제

아래에서는 학생 테이블을 만들고 클러스터형 인덱스인 경우와 그렇지 않은 경우를 설명하기 위해 세 가지 쿼리를 수행합니다.

create table student (
    id bigint,
    no varchar(20) ,
    name varchar(20) ,
    address varchar(20) ,
    PRIMARY KEY (`branch_id`) USING BTREE,
    UNIQUE KEY `idx_no` (`no`) USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

관련 학습 권장 사항: mysql 동영상 튜토리얼

첫 번째 방법은 기본 키를 기반으로 모든 필드 데이터를 직접 쿼리하고 가져오는 것입니다. 이때 기본 키는 클러스터형 인덱스입니다. 기본 키에 해당하는 노드는 id=1 모든 필드의 값을 저장합니다.

select * from student where id = 1

두 번째 방법은 번호를 기준으로 번호와 이름을 쿼리하는 것입니다. 번호 자체는 고유한 인덱스이지만 쿼리된 열에는 번호 인덱스에 도달하면 의 데이터가 포함됩니다. 인덱스의 노드가 저장됩니다. 기본 키 ID를 기반으로 기본 키 ID를 다시 쿼리해야 하므로 이 쿼리에서는 no가 클러스터형 인덱스가 아닙니다.

select no,name from student where no = 'test'

세 번째 방법은 번호(누군가가 번호를 알고 있는지 물어볼 것입니다. 여전히 쿼리가 필요합니까? 예, 해당 번호가 데이터베이스에 존재하는지 확인해야 할 수도 있습니다.) 이러한 종류의 쿼리가 번호 인덱스에 도달하면 번호가 직접 반환됩니다. 필요한 데이터는 인덱스이므로 테이블에 다시 쿼리할 필요가 없습니다.

에서는 기본 키여야 합니다. 개발자가 직접 설정하지 않더라도 고유 인덱스가 사용됩니다. 고유 인덱스가 없으면 데이터베이스 내부의 행 ID가 사용됩니다. 일반 인덱스는 SQL 시나리오와 구별되어야 합니다. SQL 쿼리의 열이 인덱스 자체인 경우 이 시나리오에서는 클러스터형 인덱스라고도 하는 일반 인덱스를 호출합니다. MyisAM 엔진에는 클러스터형 인덱스가 없습니다.

위 내용은 mysql의 비클러스터형 인덱스란 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

관련 기사

더보기