>  기사  >  데이터 베이스  >  인덱싱을 통해 테이블의 데이터 쿼리 속도를 높일 수 있나요?

인덱싱을 통해 테이블의 데이터 쿼리 속도를 높일 수 있나요?

(*-*)浩
(*-*)浩원래의
2019-07-30 14:57:346422검색

먼저 인덱싱이 속도를 높이는 이유를 이해하세요. DB가 Sql 문을 실행할 때 기본 방법은 검색 조건을 기반으로 전체 테이블을 스캔하고 일치하는 조건이 발견되면 검색 결과 세트를 추가하는 것입니다.

인덱싱을 통해 테이블의 데이터 쿼리 속도를 높일 수 있나요?

특정 필드에 인덱스를 추가하면 쿼리할 때 먼저 인덱스 목록에서 특정 값을 가진 행의 수를 찾습니다. 그러면 탐색되는 일치하는 행의 수가 크게 줄어들므로 쿼리 속도를 높이세요. (추천 학습: MySQL 동영상 튜토리얼)

인덱스를 추가하면 먼저 쿼리할 인덱스 목록으로 이동하며, 우리의 인덱스 목록은 쿼리의 시간 복잡도입니다. O(log2N)입니다. 위치 지정 특정 값으로 행하는 것이 매우 빠르므로 쿼리 속도도 매우 빠릅니다.

실용 응용 프로그램에서 운영 체제의 파일 인덱싱 및 데이터베이스 인덱싱에 B-트리보다 B+-트리가 더 적합한 이유는 무엇입니까?

1) B+-트리의 디스크 읽기 및 쓰기 비용이 저렴합니다

B+-트리의 내부 노드에는 키워드의 특정 정보에 대한 포인터가 없습니다. 따라서 내부 노드는 B-트리보다 작습니다. 동일한 내부 노드의 키워드가 모두 동일한 디스크 블록에 저장된다면, 디스크 블록은 더 많은 키워드를 담을 수 있다. 검색해야 할 더 많은 키워드가 한 번에 메모리로 읽혀집니다. 상대적으로 말하면 IO 읽기 및 쓰기 수가 줄어듭니다.

예를 들어 디스크의 디스크 블록이 16바이트, 키워드가 2바이트, 키워드별 정보 포인터가 2바이트라고 가정합니다. 9차 B-트리의 내부 노드(한 노드는 최대 8개의 키워드를 가질 수 있음)에는 2개의 디스크 드라이브가 필요합니다. B+ 트리의 내부 노드에는 1개의 디스크 속도만 필요합니다. 내부 노드를 메모리로 읽어와야 하는 경우 B-트리는 B+ 트리보다 디스크 블록 검색 시간(디스크의 경우 디스크 회전 시간)을 한 번 더 필요로 합니다.

2) B+-트리의 쿼리 효율성이 더 안정적입니다

비종단 지점은 궁극적으로 파일 내용을 가리키는 노드가 아니라 리프 노드에 있는 키워드의 인덱스일 뿐이기 때문입니다. 따라서 모든 키워드 검색은 루트 노드에서 리프 노드까지의 경로를 취해야 합니다. 모든 키워드 쿼리의 경로 길이는 동일하므로 각 데이터에 대한 쿼리 효율성이 동일합니다.

Indexes

인덱스를 사용하면 데이터베이스 테이블의 특정 정보에 빠르게 액세스할 수 있습니다. 인덱스는 직원 테이블의 성(lname) 열과 같이 데이터베이스 테이블에 있는 하나 이상의 열 값을 정렬하는 구조입니다. 성으로 특정 직원을 찾으려는 경우 인덱스를 사용하면 테이블의 모든 행을 검색해야 하는 경우보다 해당 정보를 더 빨리 얻을 수 있습니다.

참고: 모든 데이터베이스가 동일한 방식으로 인덱스를 사용하는 것은 아닙니다.

일반적으로 인덱스 열의 데이터를 자주 쿼리하는 경우에만 테이블에 인덱스를 생성하면 됩니다. 인덱스는 디스크 공간을 차지하고 행 추가, 삭제 및 업데이트 속도를 느리게 합니다. 대부분의 경우 데이터 검색에 대한 인덱스의 속도 이점은 이점보다 훨씬 큽니다.

더 많은 MySQL 관련 기술 기사를 보려면 MySQL Tutorial 칼럼을 방문하여 알아보세요!

위 내용은 인덱싱을 통해 테이블의 데이터 쿼리 속도를 높일 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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