이 기사에서는 MySQL의 결합 인덱스에 대한 이해, 결합 인덱스 생성 및 삭제 방법 소개, 결합 인덱스의 함정, 결합 인덱스와 단일 열 인덱스의 차이점 및 사용 시나리오에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다.
예를 들어 인덱스는 a,b| c
3가지 조합으로 검색이 되지만, b,c
는 검색이 지원되지 않습니다. 사용시 a, c
의 조합도 사용 가능하지만 실제로는 a
의 인덱스만 사용됩니다
key index (a,b,c)
可以支持 a | a,b| a,b,c
3 种组合进行查找,但不支持 b,c
进行查找。在使用的时候,a, c
组合也可以用,但实际上只用到了 a
的索引-- 普通的组合索引 create index index_name on table_name (column1, column2, ...) -- 组合要求唯一的索引,相比与上一种,多出了 【unique】关键字 create unique index index_name on table_name (column1, column2, ...)
-- 用法 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
如图所示,我们创建了 2 个索引,在 where 中使用 and
进行查询是,从执行计划里看只使用到了第一个条件上的索引,后续的索引直接被忽略掉
如图,现在建立组合索引 a,b,c
上图的条件查询为 b,a,c
,mysql 会自动处理条件顺序变为 a,b,c
, 再使用定义好的组合索引
上图的查询条件是 b,a
,同样的,mysql 调整条件顺序为 a,b
,再走组合索引
上图的查询条件是 b,c
,很明显,由于没有使用 a
作为条件列,导致 mysql 没有使用组合索引
联合索引中列的顺序非常重要,从左原则。
单个索引就是一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。
where 条件会经常出现的,并且当前表的数量比较大。
where 条件中是用 and
而非 or
만들기 결합된 인덱스
를 사용했습니다. in where >and
쿼리 시 실행 계획에서 첫 번째 조건의 인덱스만 사용하고 이후 인덱스는 바로 무시됩니다🎜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은 그렇지 않습니다. 결합 인덱스를 사용하세요🎜or
대신 and
를 사용하는 경우. 🎜🎜🎜🎜결합 인덱스는 단일 인덱스보다 더 적합합니다. 인덱스가 일정량의 디스크 공간을 차지하기 때문에 특정 오버헤드가 있기 때문입니다. 단일 인덱스가 두 개 이상 있으면 낭비가 많이 발생합니다. 공동 인덱스는 다중과 동일합니다. 각 열에 인덱스를 생성하고 한 번만 빌드하면 and 조건에 매우 적합합니다. 🎜🎜🎜🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 비디오🎜를 방문하세요! ! 🎜위 내용은 MySQL의 결합 인덱스에 대해 심층적으로 이해하고 단일 열 인덱스와의 차이점을 확인하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!