>데이터 베이스 >MySQL 튜토리얼 >mysql index_MySQL에 대한 자세한 소개

mysql index_MySQL에 대한 자세한 소개

WBOY
WBOY원래의
2016-11-30 23:59:391642검색

Mysql 인덱스 세부정보:

mysql에서 인덱스는 해시 인덱스와 btree 인덱스의 두 가지 유형으로 나눌 수 있습니다.

B-tree 인덱스는 어떤 상황에서 사용할 수 있나요?

1. 전체 값 매칭 지수

예:

주문ID="123"

2. 가장 왼쪽 접두사 인덱스 쿼리와 일치

예: 사용자 ID 및 날짜 필드에 대한 공동 색인을 생성합니다.

그러면 userId를 조건으로 입력하면 userid를 인덱스에 사용할 수 있습니다. 날짜를 조건으로 직접 입력하면 인덱스를 사용할 수 없습니다.

3. 일치 열 접두사 쿼리

예: order_sn like '134%' 이는 인덱스를 사용할 수 있습니다.

4. 일치 범위 값 쿼리

createTime>'2015-01-09' 및 createTime<'2015-01-10'

5. 왼쪽 앞 열과 범위가 다른 열과 정확히 일치

예:

userId=1 및 createTime>'2016-9-18'

6. 인덱스에만 접근하는 쿼리를 커버링 인덱스라고 하며, 인덱스에는 쿼리 열의 데이터가 포함됩니다.

BTREE 지수의 한계

1. 인덱스의 가장 왼쪽 열을 기준으로 검색을 시작하지 않으면 인덱스를 사용할 수 없습니다.

예를 들어 공동 색인을 생성합니다.

orderId 및 createTime 필드는 결합 인덱스를 생성합니다. orderid 조건 없이 createTIme 조건만 입력하면 이 인덱스는 사용되지 않습니다.

2. 인덱스를 사용할 때 인덱스된 열을 건너뛸 수 없습니다.

3개 열:

날짜, 이름, 전화번호는 컬럼과 인덱스를 형성합니다. 쿼리 시 날짜와 전화번호만 입력하면 날짜만 필터링용 인덱스로 사용할 수 있습니다.

3.NOT IN 및 <> 연산은 인덱스를 사용할 수 없습니다.

4. 쿼리에 특정 컬럼에 대한 범위 쿼리가 있는 경우, 그 오른쪽에 있는 모든 컬럼은 인덱스를 사용할 수 없습니다.

해시 인덱스의 특징

해시 인덱스는 해시 테이블을 기반으로 구현되며, 쿼리 조건이 해시 인덱스의 모든 열과 정확하게 일치하는 경우에만 사용할 수 있습니다. 동등한 쿼리만 가능합니다.

해시 인덱스의 모든 열에 대해 스토리지 엔진은 각 행에 대한 해시 코드를 계산하고 해시 코드는 해시 인덱스에 저장됩니다.

제한사항:

1. 두 번 읽어야 하며, 먼저 해시를 읽어 해당 행을 찾은 다음 해당 행 데이터를 읽어야 합니다.

2.해시 인덱스는 정렬에 사용할 수 없습니다.

3. 정밀 검색만 지원되며, 부분 색인 검색, 범위 검색은 지원되지 않습니다.

해시 충돌:

해시 인덱스는 선택성이 낮은 필드에는 사용할 수 없지만, 선택성이 강한 열에서는 해시 인덱스를 생성하는 데 사용해야 합니다.

예: 성별 필드에 해시 인덱스를 생성하지 마세요.

인덱스를 사용하는 이유는 무엇인가요?

1. 인덱스는 스토리지 엔진이 스캔해야 하는 데이터 양을 크게 줄여줍니다. 인덱스가 데이터 크기보다 작습니다.

2. 인덱스는 임시 테이블을 사용하지 않도록 정렬하는 데 도움이 됩니다. 인덱스는 순서가 지정됩니다.

3. 인덱스는 무작위 I/0을 순차 IO로 전환할 수 있습니다

인덱스는 많을수록 좋지 않나요?

1. 인덱스로 인해 쓰기 작업 비용이 증가합니다

2. 인덱스가 너무 많으면 쿼리 최적화 프로그램과 선택 시간이 늘어납니다.

색인 전략

1. 인덱스 열에는 표현식이나 함수를 사용할 수 없습니다.

예:

to_days(out_date) –to_days(current_date)<=30, out_date가 인덱스 열인 제품에서 *를 선택합니다.

다음으로 변경됨:

out_date

2. 인덱스 크기는 특정 값을 초과할 수 없습니다.

inodb 인덱스 열 크기는 200 길이입니다.

3. 접두사 및 인덱스 열의 선택성.

테이블(계정)에 인덱스 idx_NAME을 생성합니다.

4. 노조지수

인덱스 컬럼의 순서를 선택하는 방법.

1. 자주 색인이 생성되는 열.

2. 선택도가 높은 컬럼이 우선 적용됩니다.

3. 작은 열에 인덱스를 만듭니다.

이 기사를 읽어주셔서 감사합니다. 모든 사람에게 도움이 되기를 바랍니다. 이 사이트를 지원해 주셔서 감사합니다!

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