1장 인덱스의 구조
---------------------------------------------
Markus Winand는 SQL에 대한 통찰력을 제공하고 다양한 시스템이 SQL을 지원하는 방법을 modern-sql.com 에서 보여줍니다. 이전에 그는 use-the-index-luke.com 을 만들었는데, 지금도 활발하게 유지되고 있습니다. Markus는 winand.at 를 통해 강사, 연사 및 컨설턴트로 고용될 수 있습니다.
---------------------------------------------
You can upload a Korean translation of use-the-index-luke.com on your blog
Thank you from the bottom of my heart to author Makus Winand for allowing me.
These are translations that I use for studying by using a papago (google translate)
The translations may not be correct or there may be a typo.
I'd appreciate it if you could point it out in the comments.
---------------------------------------------
---------------------------------------------
use-the-index-luke.com 의 한글번역본을 블로그에 업로드 해도 된다고
허락해주신 Makus Winand 님께 진심으로 감사합니다.
이 번역본들은 제가 공부용도로 번역기(papago, google transrate)를 돌려서
번역한 내용들이라 맞지 않거나, 오타가 있을수 있습니다.
댓글로 지적해주시면 감사하겠습니다.
---------------------------------------------
https://use-the-index-luke.com/sql/anatomy
SQL 인덱스의 구조
"인덱스는 쿼리를 빠르게 한다"는 인덱스의 가장 기본적인 설명입니다.
인덱스의 가장 중요한 측면을 잘 설명하지만 불행히도 이 책에는 충분하지 않습니다.
이 장에서는 인덱스 구조를 피상적인 방법으로 설명하지만 너무 자세히 설명하지는 않습니다. 이메뉴얼에서는 SQL 퍼포먼스 측면을 충분히 이해할 수 있습니다.
인덱스는 create index 문을 사용하여 만들어진 데이터베이스 내의 고유한 구조로,
자체 디스크 공간이 필요하며 인덱싱된 테이블 데이터의 복사본을 보관합니다.
즉, 인덱스는 완전히 기존데이터의 여유분입니다. 인덱스를 생성해도 테이블 데이터는 변경되지 않고 테이블을 참조하는 새 데이터 구조만 생성됩니다.
결국 데이터베이스 인덱스는 책 끝에 있는 인덱스와 매우 유사합니다.
즉, 데이터베이스 인덱스는 자신의 공간을 차지하고 중복성이 높으며 다른 장소에 저장된 실제 정보를 나타냅니다.
------------------------------------------------
Clustered INDEX( SQL Server, MYSQL/InnoDB)
------------------------------------------------
SQL Server 및 MySQL은 "인덱스"의 의미를 더 넓게 볼 수 있습니다.
인덱스 구조만으로 구성된 테이블을 Clustered INDEX라고 합니다.
Oracle 데이터베이스에서는 이러한 테이블을
IOT(Index-Organized Tables)라고합니다.
5장 Clusterring Data 에서는 이러한 데이터들에 대해 더 자세히 설명하고 장점과 단점에 대해 설명합니다.
------------------------------------------------
데이터베이스 인덱스에서 검색하는 것은 인쇄된 전화 디렉토리에서 검색하는것과 같습니다. 주요 개념은 모든 엔트리가 잘 저의된 순서로 배열된다는 것입니다. 정렬 순서에 따라 각 항목의 위치가 결정되므로 정렬된 데이터 집합에서 데이터를 빠르고 쉽게 찾을 수 있습니다.
그러나 데이터베이스 색인은 지속적으로 변경되기 때문에 인쇄된 디렉토리보다 더 복잡합니다. 기존 엔트리 사이에 새 엔트리를 추가할 공간이 없기 때문에 변경 시마다 인쇄 디렉토리를 업데이트할 수 없습니다.
인쇄된 디렉토리는 다음 인쇄 시 누적된 업데이트만 처리함으로써 이 문제를 해결합니다.
SQL 데이터베이스는 그렇게 오래 기다릴 수 없습니다. 처리되어야 합니다.
insert, delete 그리고 update 대량의 데이터를 이동하지 않고 index 순서를 유지하도록 명령문을 즉시 작성할 수 있습니다.
데이터베이스는 이중 링크 목록과
검색 트리라는 두 가지 데이터 구조를 결합하여 과제를 해결합니다. 이 두 가지 구조는 데이터베이스의 성능 특성을 대부분 설명합니다.