집 >데이터 베이스 >MySQL 튜토리얼 >데이터베이스 인덱싱은 쿼리 성능을 어떻게 향상시키며 언제 사용해야 합니까?
데이터베이스 인덱스: 작동 원리 및 적용 시나리오
데이터베이스 인덱싱은 데이터베이스 쿼리 성능을 향상시키기 위해 데이터를 특정 방식으로 구성하는 기술입니다. 데이터베이스의 크기가 증가함에 따라 데이터 검색 및 검색 속도가 크게 빨라지기 때문에 인덱싱이 중요해졌습니다.
지수의 중요성
데이터가 디스크에 저장되면 데이터 블록으로 나누어집니다. 이러한 데이터 블록에 액세스하려면 전체 블록을 완전히 읽어야 하며 이는 시간이 많이 걸리는 프로세스입니다. 정렬되지 않은 데이터를 검색하려면 큰 데이터 블록을 검색하는 선형 검색이 필요하며 비효율적입니다.
데이터베이스 인덱스란 무엇인가요?
색인을 사용하면 특정 필드의 데이터를 정렬하여 더 빠른 데이터 검색이 가능합니다. 필드에 인덱스가 생성되면 필드 값과 해당 레코드 포인터를 포함하는 추가 데이터 구조가 생성됩니다. 이 인덱스 구조는 이진 검색을 수행할 수 있도록 정렬되어 성능이 크게 향상됩니다.
색인 작동 방식
다음 샘플 데이터베이스 테이블을 고려해 보세요.
字段名 | 数据类型 | 大小 |
---|---|---|
id | 无符号INT | 4 字节 |
firstName | Char(50) | 50 字节 |
lastName | Char(50) | 50 字节 |
emailAddress | Char(100) | 100 字节 |
MyISAM 엔진을 사용하여 5,000,000개의 레코드가 있는 테이블이 있다고 가정합니다(기본 블록 크기는 1,024바이트). ID 값(정렬된 키 필드)을 검색하는 데 필요한 평균 데이터 블록 액세스 횟수는 20회이며, 이는 선형 검색에 필요한 500,000회 액세스보다 훨씬 낮습니다.
그러나 firstName과 같이 정렬되지 않은 키가 아닌 필드를 검색하려면 전체 테이블을 검색해야 합니다(블록 액세스 1,000,000회). 여기서 인덱스가 작동합니다.
firstName의 인덱스는 다음과 같은 구조를 갖습니다.
字段名 | 数据类型 | 大小 |
---|---|---|
firstName | Char(50) | 50 字节 |
(记录指针) | 特殊 | 4 字节 |
인덱스를 사용하면 firstName 값을 검색하는 데 평균 20번의 블록 액세스만 필요한 이진 검색이 가능합니다. 이는 인덱싱되지 않은 테이블에 필요한 1,000,000개의 액세스에 비해 크게 개선된 것입니다.
색인을 사용하는 경우
인덱싱은 쿼리 성능을 향상시킬 수 있지만 오버헤드(추가 디스크 공간 및 처리 시간)도 발생합니다. 인덱스는 다음 요소를 기반으로 신중하게 선택해야 합니다.
위 내용은 데이터베이스 인덱싱은 쿼리 성능을 어떻게 향상시키며 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!