간단히 말하면, 테이블 반환은 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의 차이점에 대한 간략한 소개입니다.
B+트리에서만 리프 노드에는 레코드에 대한 포인터가 있는 반면, B-트리의 모든 노드에는 포인터가 있으며, 내부 노드에 나타나는 인덱스 항목은 더 이상 리프 노드에 나타나지 않습니다.
B+ 트리의 모든 리프 노드는 포인터를 통해 함께 연결되지만 B-트리는 그렇지 않습니다.
커버링 인덱스 사용 커버링 인덱스는 쿼리의 모든 필드가 인덱스에 포함되어 있음을 의미합니다. 이 경우 테이블에 다시 쿼리를 수행할 필요가 없습니다.
위 내용은 MySQL 테이블 반환은 무엇을 참조합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!