>데이터 베이스 >MySQL 튜토리얼 >인덱싱에 대한 지식 포인트

인덱싱에 대한 지식 포인트

时间把记忆冲淡
时间把记忆冲淡원래의
2020-05-10 15:04:02199검색

인덱스란 무엇인가요?

인덱스는 스토리지 엔진이 레코드를 빠르게 찾을 수 있게 해주는 데이터 구조입니다. 데이터의 디렉터리라고도 할 수 있습니다. 인덱스 파일은 B-Tree 형식으로 저장됩니다.

인덱스의 역할은 무엇인가요?

1. 인덱스는 데이터 검색 속도를 높이고 데이터 그룹화 및 정렬을 가능하게 합니다.
2. 인덱스는 데이터의 고유성을 보장할 수 있습니다.

인덱스의 단점은 무엇입니까?

1. 인덱스 생성 및 유지 관리에는 시간이 걸리고 인덱스 크기가 증가함에 따라 증가합니다.

2. 인덱스 생성은 물리적 공간을 소비합니다
3. 또한 동적으로 유지 관리해야 합니다

쿼리 속도를 향상할 수 있는 이유는 무엇입니까?

주로 B+트리 구조 검색에 비해 순차 검색의 효율성이 낮기 때문입니다. (자세한 이해가 필요합니다.)

인덱스 종류?

1. 기본 키 인덱스

프라이마크 키(Primary Key)는 null 값을 허용하지 않는 특수한 고유 인덱스입니다. 일반적으로 기본 키 인덱스는 테이블 생성과 동시에 생성됩니다. 참고: 테이블에는 기본 키가 하나만 있을 수 있습니다.
2. 고유 인덱스
고유 인덱스 설정을 위한 키워드 고유 고유 인덱스 열의 값은 고유해야 하지만 null 값은 허용됩니다. 복합 인덱스의 경우 컬럼 값의 조합이 고유해야 합니다.
3. 일반 색인
가장 기본적인 색인으로 제한이 없습니다.
4. 복합 인덱스
즉, 인덱스에는 주로 테이블 백 쿼리를 방지하는 데 사용됩니다.

1. -- 1. PRIMARY KEY(기본 키 인덱스) 추가

ALTER TABLE ` table_name` ADD PRIMARY KEY (`column`) ;

2. -- 2. UNIQUE (고유 인덱스) 추가

ALTER TABLE `table_name` ADD UNIQUE (`column`);

3. INDEX 추가 (일반 인덱스)

ALTER TABLE `table_name` ADD INDEX index_name (`column`);

4. -- 4. FULLTEXT (전체 텍스트 인덱스) 추가

ALTER TABLE `table_name` ADD FULLTEXT (`column`) ;

5. -- 5. 다중 열 인덱스 추가

ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`)


인덱스는 한 번 수정될 수 없습니다. 인덱스를 수정하려면 삭제하고 다시 작성하기만 하면 됩니다. DROP INDEX index_name ON table_name을 사용하여 인덱스를 삭제할 수 있습니다.

핵심 포인트

단일 컬럼 인덱스 기반의 통합 인덱스가 필요한 이유는 무엇인가요? 결합 인덱스를 만들지 않기 때문에 mysql은 가장 효율적인 인덱스 중 하나만 사용하고 효율성은 보통 수준입니다

결합 색인의 가장 왼쪽 원칙은 무엇인가요?

결합 색인 사용자 이름, 도시, 연령은 실제로 다음 세 가지 결합 색인 세트를 설정하는 것과 같습니다.
1.usernname,city,age 2.usernname; , 도시; 3.사용자 이름
도시와 나이 같은 통합 인덱스가 없는 이유는 무엇인가요? 이는 MySQL 복합 인덱스의 "가장 왼쪽 접두사"의 결과입니다. 간단한 이해는 가장 왼쪽부터 조합을 시작하는 것입니다. 이 세 개의 열을 포함하는 쿼리뿐만 아니라 다음 SQL도 이 결합 인덱스를 사용합니다.

SELECT * FROM mytable WHREE username="admin" AND city="Zhengzhou"SELECT * FROM mytable WHREE username="admin"

다음 항목은 사용되지 않습니다.

SELECT * FROM mytable WHREE age=20 AND city="Zhengzhou"SELECT * FROM mytable WHREE city="Zhengzhou"

색인 생성 원칙:

  1. 가장 왼쪽 원칙

  2. 카디널리티가 작은 테이블에는 인덱스를 생성하지 않는 것이 가장 좋습니다

  3. 차별화가 높은 열을 인덱스로 선택하세요

  4. 인덱스를 최대한 확장하고, 새 인덱스를 만들지 마세요. .

  5. 쿼리 조건, 정렬, 그룹화 및 공동 작업으로 자주 사용해야 하는 필드에 대해 인덱스를 생성하세요.

  6. 인덱스 수를 제한하고, 맹목적으로 인덱스를 생성하지 마세요

  7. 작은 인덱스를 사용해보세요.

  8. 더 이상 사용되지 않거나 거의 사용되지 않는 인덱스 삭제

인덱스 최적화 정보:

  1. 인덱스 열에 대한 계산 사용 방지

  2. 사용 방지 not

    인덱스 열에
  3. 인덱스 열에 is null 및 is not null 사용을 피하세요

  4. 인덱스의 가장 왼쪽 원칙을 따르세요

  5. where 절을 사용하지 않으면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행합니다

  6. 퍼지 쿼리 앞에는 백분율 기호가 올 수 없습니다. 그렇지 않으면 전체 테이블 스캔이 발생합니다

  7. 또는 조건을 연결하는 where 절을 사용하면 엔진이 인덱스 사용을 포기하고 전체 테이블 스캔을 수행하게 됩니다. Scan

  8. 열 유형이 문자열인 경우 조건에서 데이터를 인용해야 합니다. 그렇지 않으면 인덱스가 사용되지 않습니다.

위 내용은 인덱싱에 대한 지식 포인트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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