MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

青灯夜游
풀어 주다: 2021-11-03 19:29:05
앞으로
7093명이 탐색했습니다.

이 기사에서는 MySQL의 결합 인덱스에 대한 이해, 결합 인덱스 생성 및 삭제 방법 소개, 결합 인덱스의 함정, 결합 인덱스와 단일 열 인덱스의 차이점 및 사용 시나리오에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다.

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

복합 인덱스란 무엇인가요? 두 개 이상의 열에 대한 인덱스를 결합 인덱스라고 하며, 결합 인덱스를 복합 인덱스라고도 합니다. [관련 권장사항: mysql 동영상 튜토리얼

]

예를 들어 인덱스는 a,b| c 3가지 조합으로 검색이 되지만, b,c는 검색이 지원되지 않습니다. 사용시 a, c의 조합도 사용 가능하지만 실제로는 a의 인덱스만 사용됩니다

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

key index (a,b,c) 可以支持 a | a,b| a,b,c 3 种组合进行查找,但不支持 b,c 进行查找。在使用的时候,a, c 组合也可以用,但实际上只用到了 a 的索引

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

创建组合索引

-- 普通的组合索引
create index index_name on table_name (column1, column2, ...)
-- 组合要求唯一的索引,相比与上一种,多出了 【unique】关键字
create unique index index_name on table_name (column1, column2, ...)
로그인 후 복사

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

删除组合索引

-- 用法 1
drop index index_name on talbe_name
-- 用法 2
alter table table_name drop index index_name
-- 用法 3,对 2 的包装
alter table table_name drop primary key
로그인 후 복사

单列索引陷阱

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

如图所示,我们创建了 2 个索引,在 where 中使用 and 进行查询是,从执行计划里看只使用到了第一个条件上的索引,后续的索引直接被忽略掉

组合索引陷阱

如图,现在建立组合索引 a,b,c

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

上图的条件查询为 b,a,c,mysql 会自动处理条件顺序变为 a,b,c , 再使用定义好的组合索引

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

上图的查询条件是 b,a,同样的,mysql 调整条件顺序为 a,b,再走组合索引

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

上图的查询条件是 b,c,很明显,由于没有使用 a 作为条件列,导致 mysql 没有使用组合索引

与单列索引的区别

联合索引中列的顺序非常重要,从左原则。

单个索引就是一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。

组合索引使用场景

  • where 条件会经常出现的,并且当前表的数量比较大。

  • where 条件中是用 and 而非 or만들기 결합된 인덱스

  • rrreee
  • MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.

    결합 인덱스 삭제

rrreee

단일 열 인덱스 트랩

MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.🎜🎜MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.🎜🎜그림과 같이 인덱스 2개를 생성하고 를 사용했습니다. in where >and 쿼리 시 실행 계획에서 첫 번째 조건의 인덱스만 사용하고 이후 인덱스는 바로 무시됩니다🎜

🎜결합 인덱스 트랩 🎜 🎜🎜그림과 같이 이제 a, b, c 결합 인덱스를 생성합니다🎜🎜MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.🎜🎜위 그림의 조건부 쿼리는 b,a,c이고 mysql은 자동으로 조건 시퀀스를 로 처리합니다. a,b,c 그런 다음 정의된 결합 인덱스 🎜🎜<img src="https://img.php.cn/upload/image/606/915/328/163593860143734MySQL%EC%9D%98%20%EA%B2%B0%ED%95%A9%20%EC%9D%B8%EB%8D%B1%EC%8A%A4%EC%97%90%20%EB%8C%80%ED%95%B4%20%EC%8B%AC%EC%B8%B5%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0%20%EB%8B%A8%EC%9D%BC%20%EC%97%B4%20%EC%9D%B8%EB%8D%B1%EC%8A%A4%EC%99%80%EC%9D%98%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%84%20%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94." title="을" alt="MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.">🎜🎜위 그림의 쿼리 조건은 <code>b,a입니다. 마찬가지로 mysql은 조건 순서를 a,b, 그런 다음 결합된 인덱스 🎜🎜<img src="https://img.php.cn/upload/image/149/823/571/1635938629900948.png" title="1635938629900948.png" alt="를">🎜🎜Up 그래프의 쿼리 조건은 <code>b,c입니다. 당연히 a가 조건 열로 사용되지 않기 때문에 mysql은 그렇지 않습니다. 결합 인덱스를 사용하세요🎜

🎜단일 컬럼 인덱스와의 차이점🎜🎜🎜공동 인덱스에서 컬럼의 순서는 왼쪽 원칙에서 매우 중요합니다. 🎜🎜단일 인덱스는 하나씩 작동합니다. 즉, 3개의 단일 인덱스가 있으며 조건 쿼리가 먼저 작동하고 나머지는 작동하지 않습니다. 🎜

🎜결합된 인덱스 사용 시나리오🎜🎜
    🎜🎜조건이 자주 나타나고 현재 테이블 수가 크게 비교됩니다. 🎜🎜🎜🎜where 조건에서 or 대신 and를 사용하는 경우. 🎜🎜🎜🎜결합 인덱스는 단일 인덱스보다 더 적합합니다. 인덱스가 일정량의 디스크 공간을 차지하기 때문에 특정 오버헤드가 있기 때문입니다. 단일 인덱스가 두 개 이상 있으면 낭비가 많이 발생합니다. 공동 인덱스는 다중과 동일합니다. 각 열에 인덱스를 생성하고 한 번만 빌드하면 and 조건에 매우 적합합니다. 🎜🎜🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 비디오🎜를 방문하세요! ! 🎜

위 내용은 MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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