>  기사  >  데이터 베이스  >  조인트 인덱스 기능을 이용한 MySQL용 샘플 코드 공유

조인트 인덱스 기능을 이용한 MySQL용 샘플 코드 공유

黄舟
黄舟원래의
2017-09-14 11:13:061369검색

본 글은 주로 MySQL 공동 인덱스의 기능과 사용법을 소개하고, 공동 인덱스의 개념, 기능, 구체적인 사용법, 관련 주의사항 등을 구체적인 사례로 분석해 도움이 필요한 친구들이 참고할 수 있습니다

본 글의 예시는 다음과 같습니다. MySQL 공동 인덱스 기능 및 사용법을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

공동지수는 종합지수라고도 합니다. 복합 인덱스의 경우: MySQL은 인덱스의 필드를 왼쪽에서 오른쪽으로 사용합니다. 쿼리는 인덱스의 일부만 사용할 수 있지만 가장 왼쪽 부분만 사용할 수 있습니다. 예를 들어, 인덱스는 키 인덱스(a,b,c)로, 검색에는 a,b|a,b,c의 3가지 조합을 지원하지만, 가장 왼쪽에 있는 경우에는 b,c를 지원하지 않습니다. 필드는 상수 참조이므로 인덱스는 매우 효과적입니다.

둘 이상의 열에 대한 인덱스를 복합 인덱스라고 합니다.

색인에 추가 열을 사용하면 검색 범위를 좁힐 수 있지만 두 개의 열이 있는 하나의 인덱스를 사용하는 것은 두 개의 별도 인덱스를 사용하는 것과 다릅니다. 복합 색인의 구조는 사람의 이름이 성과 이름으로 구성된 전화번호부 구조와 유사합니다. 전화번호부는 먼저 성 쌍으로 정렬된 다음 동일한 사람의 이름으로 정렬됩니다. 성. 전화번호부는 성을 알면 매우 유용하고 성과 이름을 모두 알면 더 유용하지만, 이름만 알고 성을 모르면 쓸모가 없습니다.

따라서 복합 인덱스를 생성할 때는 열의 순서를 신중하게 고려해야 합니다. 복합 인덱스는 인덱스의 모든 열을 검색하거나 처음 몇 개의 열만 검색할 때 유용합니다. 후속 열을 검색할 때는 유용하지 않습니다.

예: 이름, 나이, 성별로 구성된 복합 인덱스를 만듭니다.


create table test(
a int,
b int,
c int,
KEY a(a,b,c)
);

 
优: select * from test where a=10 and b>50
差: select * from test where a>50

优: select * from test order by a
差: select * from test order by b
差: select * from test order by c

优: select * from test where a=10 order by a
优: select * from test where a=10 order by b
差: select * from test where a=10 order by c

优: select * from test where a>10 order by a
差: select * from test where a>10 order by b
差: select * from test where a>10 order by c

优: select * from test where a=10 and b=10 order by a
优: select * from test where a=10 and b=10 order by b
优: select * from test where a=10 and b=10 order by c

优: select * from test where a=10 and b=10 order by a
优: select * from test where a=10 and b>10 order by b
差: select * from test where a=10 and b>10 order by c

인덱스 원칙

1. 인덱스가 적을수록 좋습니다.

이유: 주로 데이터를 수정할 때 첫 번째 인덱스를 업데이트해야 하므로 쓰기 속도가 느려집니다.

2. 가장 좁은 필드를 키 왼쪽에 배치하세요.

3. 파일 정렬, 임시 테이블 및 테이블 스캔을 피하세요.

위 내용은 조인트 인덱스 기능을 이용한 MySQL용 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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