MySQL 테이블 반환은 무엇을 참조합니까?

王林
풀어 주다: 2023-06-01 22:46:04
앞으로
3142명이 탐색했습니다.

소개

간단히 말하면, 테이블 반환은 MySQL이 먼저 기본 키 인덱스를 쿼리한 다음 기본 키 인덱스를 사용하여 데이터를 찾아야 함을 의미합니다.

아래에서는 몇 가지 질문을 분석하고 답변합니다.

  • 클러스터형 인덱스란 무엇입니까? 비클러스터형 인덱스란 무엇입니까?

  • 테이블을 반환할 때 기본 키 인덱스를 먼저 조회해야 하는 이유는 무엇인가요?

  • 기본 키 인덱스와 비기본 키 인덱스의 차이점은 무엇인가요?

  • 양식 반환을 피하는 방법은 무엇입니까?

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

MySQL 인덱스는 데이터 구조, 논리적 관점, 물리적 저장소 등 다양한 관점으로 분류됩니다.

그 중에는 물리적 저장소 기반의 인덱스에는 클러스터형 인덱스비클러스터형 인덱스 두 가지 유형이 있습니다.

간단히 말하면 클러스터형 인덱스는 기본 키 인덱스입니다.

기본 키 인덱스 외에 비클러스터형 인덱스도 있습니다. 비클러스터형 인덱스는 보조 인덱스라고도 합니다.

기본 키 인덱스와 비기본 키 인덱스의 차이점은 무엇인가요?

같은 점: 둘 다 B+Tree를 사용합니다.

차이점: 리프 노드는 다른 데이터를 저장합니다

  • 기본 키 인덱스의 리프 노드는 데이터의 전체 행을 저장합니다.

  • 비기본 키 인덱스의 리프 노드는 기본 키 인덱스를 저장합니다. 핵심가치 . 리프 노드에는 레코드의 모든 데이터가 포함되어 있지는 않지만, 비기본 키 리프 노드에는 클러스터형 인덱스의 키를 저장하는 북마크(bookmark)도 포함되어 있습니다.

그럼 이 두 인덱스의 사용법 차이점은 무엇인가요?

기본키 인덱스를 이용한 쿼리:

# 主键索引的的叶子节点存储的是**一行完整的数据**,
# 所以只需搜索主键索引的 B+Tree 就可以轻松找到全部数据
select * from user where id = 1;
로그인 후 복사

비기본키 인덱스를 이용한 쿼리:

# 非主键索引的叶子节点存储的是**主键值**,
# 所以MySQL会先查询到 name 列的索引的 B+Tree,搜索得到对应的主键值
# 然后再去搜索该主键值查询主键索引的 B+Tree 才可以找到对应的数据
select * from user where name = 'Jack';
로그인 후 복사

비기본키 인덱스를 사용하면 기본키 인덱스보다 B+Tree를 하나 더 많이 사용하는 것을 알 수 있다.

B-Tree와 B+Tree에 대한 간단한 이해

클러스터형 인덱스와 비클러스터형 인덱스를 이해하는 열쇠는 B+Tree에 대한 이해에 있습니다.

그림을 사용하여 표현하고 나머지는 너무 많이 설명하지 않습니다.

MySQL 테이블 반환은 무엇을 참조합니까?

다음은 B-Tree와 B+Tree의 차이점에 대한 간략한 소개입니다.

  • B+트리에서만 리프 노드에는 레코드에 대한 포인터가 있는 반면, B-트리의 모든 노드에는 포인터가 있으며, 내부 노드에 나타나는 인덱스 항목은 더 이상 리프 노드에 나타나지 않습니다.

  • B+ 트리의 모든 리프 노드는 포인터를 통해 함께 연결되지만 B-트리는 그렇지 않습니다.

양식 반환을 피하는 방법은 무엇입니까?

커버링 인덱스 사용 커버링 인덱스는 쿼리의 모든 필드가 인덱스에 포함되어 있음을 의미합니다. 이 경우 테이블에 다시 쿼리를 수행할 필요가 없습니다.

위 내용은 MySQL 테이블 반환은 무엇을 참조합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿