English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

mysql 인덱스 학습 강의

MySQL에서, 인덱스는 해시 인덱스와 B트리 인덱스로 나뉩니다.

B트리 인덱스를 사용할 수 있는 경우는 무엇인가요?

1.전체 값 일치 인덱스

예를 들어:

orderID="123"

2.가장 왼쪽前列에 일치하는 인덱스를 일치시킵니다

예를 들어: userid와 date 필드에 결합 인덱스를 생성합니다.
그래서 userId를 조건으로 입력하면 해당 userId는 인덱스를 사용할 수 있지만, date를 조건으로 직접 입력하면 인덱스를 사용할 수 없습니다.

3.컬럼 전缀 쿼리를 일치시킵니다

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

4.범위 값 쿼리를 일치시킵니다

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

5.왼쪽前列에 정확히 일치하고 다른 열에 범위로 일치

예를 들어:

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

6.인덱스에 접근하는 쿼리는 커버 인덱스라고 불리며, 인덱스는 쿼리 열을 포함하고 있습니다.

BTREE 인덱스의 제한

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

예를 들어, 결합 인덱스를 생성하면:

orderId, createTime 필드가 결합 인덱스를 생성하면, createTIme 조건만 입력하면 orderId 조건이 없기 때문에 이 인덱스를 사용할 수 없습니다.

2.인덱스를 사용할 때 인덱스 열을 건너뛰지 못합니다.

세 열:

날짜, 이름, 전화번호 열과 인덱스가组成되어 있으며, 쿼리할 때 날짜와 전화번호만 입력하면 날짜를 인덱스로 사용하여 필터링할 수 있습니다.

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

4.쿼리에 열의 범위 검색이 포함되면, 그 열의 모든 열은 인덱스를 사용할 수 없습니다.

해시 인덱스의 특징

해시 인덱스는 해시 테이블을 기반으로 구현되었습니다. 해시 인덱스를 사용하려면, 쿼리 조건이 해시 인덱스의 모든 열과 정확히 일치해야 합니다. 해시 인덱스는 등가 조건 검색에만 사용할 수 있습니다.

해시 인덱스의 모든 열에 대해, 저장 엔진은 각 행에 대해 해시 코드를 계산합니다. 해시 인덱스에 저장된 것은 해시 코드입니다.

제한:

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

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

3.정확한 검색만 지원하며, 부분 인덱스 검색과 범위 검색을 지원하지 않습니다.

해시 충돌:

해시 인덱스는 선택성이 매우 낮은 필드에 사용할 수 없으며, 선택성이 높은 열에 해시 인덱스를 생성해야 합니다.

예를 들어: 성별 필드에 해시 인덱스를 생성하지 마십시오.

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

1. 인덱스는 스토리지 엔진이 스캔해야 할 데이터량을 대폭 줄입니다. 인덱스는 데이터 크기보다 작습니다.

2. 인덱스는 템퍼러리 테이블을 사용하지 않고 정렬할 수 있도록 도와줍니다. 인덱스는 순서가 있습니다.

3. 인덱스는 무작위의 I를/0 이 되어 순서의 IO로 변환됩니다.

인덱스는 더 많을수록 좋을까요?

1. 인덱스는 쓰기 작업의 비용을 증가시킬 수 있습니다.

2. 너무 많은 인덱스는 쿼리 최적화 기계와 선택 시간을 증가시킬 수 있습니다.

인덱스를 구축하는 전략

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

예를 들어: select * from product where to_days(out_date) –to_days(current_date)<=30, out_date는 인덱스 열입니다.

변경하여:

select* from product where out_date<date_add(current_date,interval 30 일)

2. 인덱스 크기는 특정 값을 초과할 수 없습니다.
inodb 인덱스 열의 크기는 200 개의 길이.

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

table에 대해 create index idx_NAME on (account);

4. 복합 인덱스

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

1. 자주 인덱스되는 열.

2. 선택성이 높은 열을 우선으로 선택하십시오.

3. 작은 열에 인덱스를 생성하십시오.

공지: 본 문서의 내용은 인터넷에서 가져왔으며, 저작권자는 모두 원저자이며, 인터넷 사용자가 자발적으로 기여하고 자체로 업로드한 내용으로, 웹사이트는 저작권을 소유하지 않으며, 인공 편집을 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용을 발견하시면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com에 (메일 보내는 경우 #을 @으로 변경하십시오) 신고하시고 관련 증거를 제공하시면, 해당 저작권 침해 내용이 확인되면 즉시 해당 내용을 삭제하겠습니다.

좋아하는 것