찾다
데이터 베이스MySQL 튜토리얼mysql 클러스터형 인덱스와 비클러스터형 인덱스의 차이점은 무엇입니까

차이점: 1. 클러스터형 인덱스는 테이블의 리프 노드에 데이터를 저장하는 반면, 비클러스터형 인덱스는 기본 키와 인덱스 열을 리프 노드에 저장합니다. 2. 테이블의 순서는 클러스터형 인덱스에 기록됩니다. 3. 각 테이블은 클러스터형 인덱스를 하나만 가질 수 있지만 비클러스터형 인덱스는 여러 개 있을 수 있습니다.

mysql 클러스터형 인덱스와 비클러스터형 인덱스의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

MySQL의 Innodb 스토리지 엔진의 인덱스는 클러스터형 인덱스와 비클러스터형 인덱스의 두 가지 범주로 구분됩니다. 중국어 사전의 인덱스를 비교하면 클러스터형 인덱스와 비클러스터형 인덱스를 이해할 수 있습니다. 중국어 사전은 한자를 검색하는 두 가지 방법을 제공합니다. 첫 번째는 병음 검색입니다(한자의 발음이 알려진 경우). 예를 들어 병음이 cheng인 한자는 병음이 있는 한자 뒤에 순위가 지정됩니다. chang. 해당 한자의 페이지 번호는 병음을 기반으로 검색됩니다(병음 정렬을 누르면 이진 검색이 빠르게 찾을 수 있기 때문입니다). 이는 우리가 일반적으로 사전 순서라고 부르는 두 번째 유형으로 해당 중국어를 찾습니다. 획에 따라 문자를 찾아, 한자에 해당하는 페이지 번호를 찾아보세요. 병음 검색은 획 색인에서 동일한 획을 가진 단어가 인접하더라도 저장된 레코드(데이터베이스의 행 데이터, 사전의 한자 세부 기록)가 이 색인에 따라 정렬되므로 클러스터형 색인입니다. 실제 저장소 페이지 번호가 인접하지 않습니다. 이는 비클러스터형 인덱스입니다.

Clustered Index

인덱스에 있는 키 값의 논리적 순서에 따라 테이블에서 해당 행의 물리적 순서가 결정됩니다.

클러스터형 인덱스는 테이블에 있는 데이터의 물리적 순서를 결정합니다. 클러스터형 인덱스는 성별로 데이터를 정렬하는 전화번호부와 유사합니다. 클러스터형 인덱스는 범위 값이 자주 검색되는 열에 특히 효과적입니다. 클러스터형 인덱스를 사용하여 첫 번째 값이 포함된 행을 찾으면 후속 인덱스 값이 포함된 행이 물리적으로 인접해 있는지 확인할 수 있습니다. 예를 들어, 응용 프로그램이 특정 날짜 범위 내의 레코드를 자주 검색하는 쿼리를 수행하는 경우 클러스터형 인덱스를 사용하여 시작 날짜가 포함된 행을 빠르게 찾은 다음 종료 날짜에 도달할 때까지 테이블에서 인접한 모든 행을 검색할 수 있습니다. 이는 그러한 쿼리의 성능을 향상시키는 데 도움이 됩니다. 마찬가지로, 테이블에서 검색된 데이터를 정렬할 때 열이 자주 사용되는 경우 해당 열을 쿼리할 때마다 테이블을 정렬할 필요가 없으므로 테이블을 해당 열에 클러스터링(물리적으로 정렬)할 수 있어 비용을 절약할 수 있습니다.

위는 innodb의 b+tree 인덱스 구조입니다

우리는 b-tree에서 진화한 것으로 알고 있습니다. m-order B-Tree는 다음과 같은 특성을 갖습니다.

1. 최대 m개의 하위 노드를 가질 수 있습니다.
2. 루트 노드와 리프 노드를 제외하고 각 노드에는 최소 m/2(반올림) 하위 노드가 있습니다.
3. 루트 노드가 리프 노드가 아닌 경우 루트 노드에는 두 개 이상의 하위 노드가 포함됩니다.
4. 모든 리프 노드는 동일한 레이어에 위치합니다.
5. 각 노드에는 k개의 요소(키워드)가 포함되어 있습니다. 여기서 m/2≤k6. 각 노드의 요소(키워드)는 작은 것부터 큰 것 순으로 배열됩니다.
7. 각 요소(키워드)의 왼쪽 노드 값은 해당 요소(키워드)보다 작거나 같습니다. 오른쪽 노드의 값은 해당 요소(키워드)보다 크거나 같습니다.

b+tree의 특징은 다음과 같습니다.

1. 모든 리프가 아닌 노드는 키워드 정보만 저장합니다.
2. 모든 위성 데이터(특정 데이터)는 리프 노드에 저장됩니다.
3. 모든 리프 노드에는 모든 요소에 대한 정보가 포함됩니다.
4. 모든 리프 노드 사이에는 링크 포인터가 있습니다.

b+trre에는 다음과 같은 특징이 있음을 발견했습니다.

  • 는 (리프 체인 포인터를 통해) 범위 내의 쿼리에 대해 특히 효과적이고 빠릅니다.
  • 특정 키 값에 대한 쿼리는 b보다 약간 덜 효율적입니다. -tree(리프 수준 때문에), 무시할 수도 있습니다.

비클러스터형 인덱스

 인덱스에 있는 인덱스의 논리적 순서는 디스크 업스트림의 물리적 저장 순서와 다릅니다.

실제로는 클러스터형 인덱스 이외의 인덱스도 정의상 비클러스터형 인덱스인데 사람들은 비클러스터형 인덱스를 일반 인덱스, 고유 인덱스, 전체 텍스트 인덱스로 세분화하고 싶어합니다. 논클러스터형 인덱스를 실생활의 어떤 것과 비교해야 한다면 논클러스터형 인덱스는 신화사전의 급진적 사전과 같으며 그 구조적 순서가 실제 저장 순서와 반드시 일치하지는 않습니다.

비클러스터형 인덱스의 저장 구조는 이전과 동일합니다. 차이점은 리프 노드의 데이터 부분에 더 이상 특정 데이터가 저장되지 않고 데이터의 클러스터형 인덱스 키가 저장된다는 점입니다. 따라서 비클러스터형 인덱스를 통한 검색 과정은 먼저 인덱스 키에 해당하는 클러스터형 인덱스의 키를 찾은 후, 클러스터형 인덱스의 키를 이용하여 기본키 인덱스 트리에서 해당 데이터를 찾는 것이다. 그 과정을 테이블 반납이라고 합니다!

예를 들어주세요:

create table student (

`id` INT UNSIGNED AUTO_INCREMENT,

`username` VARCHAR(255),
`score` INT,
PRIMARY KEY(`id`), KEY(`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

클러스터형 인덱스 클러스터형 인덱스(id), 비클러스터형 인덱스 인덱스(사용자 이름).

使用以下语句进行查询,不需要进行二次查询,直接就可以从非聚集索引的节点里面就可以获取到查询列的数据。

select id, username from t1 where username = '小明'
select username from t1 where username = '小明'

但是使用以下语句进行查询,就需要二次的查询去获取原数据行的score:

select username, score from t1 where username = '小明'

聚集索引和非聚集索引区别

区别一:

聚集索引:就是以主键创建的索引,在叶子节点存储的是表中的数据

非聚集索引:就是以非主键创建的索引(也叫做二级索引),在叶子节点存储的是主键和索引列。

区别二:

聚集索引中表记录的排列顺序和索引的排列顺序一致;所以查询效率快,因为只要找到第一个索引值记录,其余的连续性的记录在物理表中也会连续存放,一起就可以查询到。缺点:新增比较慢,因为为了保证表中记录的物理顺序和索引顺序一致,在记录插入的时候,会对数据页重新排序。

非聚集索引中表记录的排列顺序和索引的排列顺序不一致。

区别三:

聚集索引是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储不连续。

区别四:

聚集索引每张表只能有一个,非聚集索引可以有多个。

【相关推荐:mysql视频教程

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

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

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경