본문 바로가기

데이터베이스3

[4] 인덱스 확장기능 사용법 이 글은 [친절한 SQL 튜닝] 을 학습하고 정리한 글입니다. 3번 게시물까지는 Index Range Scan 중심으로 다루었는데 Index Full Scan, Index Unique Scan, Index Skip Scan, Index Fast Full Scan 등 인덱스 스캔 방식은 다양합니다. 하나하나 알아보겠습니다. Index Range Scan B* Tree의 가장 일반적인 액세스 방식인데요 인덱스 Root에서 Leaf 까지 값을 비교하며 수직적으로 탐색한 후에 Leaf에서부턴 필요한 범위만 스캔합니다. 인덱스를 Range Scan 하려면 선두 컬럼을 가공하지 않은 상태로 조건절에서 사용해야 합니다. 중요한 점은 인덱스 스캔범위와 테이블 액세스 횟수를 얼마나 줄일 수 있냐로 결정됩니다. selec.. 2020. 11. 2.
[3] 인덱스 기본 사용법 이 글은 [친절한 SQL 튜닝] 을 학습하고 정리한 글입니다. 인덱스 사용의 기본은 Index Range Scan 하는 방법을 이해하는 것인데요. 리프 블록에서 스캔 시작점을 찾아 거기서부터 스캔하다가 중간에 멈추는 것을 의미합니다. 인덱스 컬럼을 가공하면 인덱스를 이용한 Range Scan을 할 수 없게 됩니다. 인덱스 컬럼을 가공한다는 것은, 인덱스 컬럼이 제공하는 데이터의 일부 혹은 변형된 값을 사용하여 쿼리를 하는 것을 의미합니다. 예를 들어, "날짜" 에 대해서 index가 구성되어 있었다고 가정을 하면 날짜가 2007년 6월 1일 ~ 2007년 6월 31일에 발생한 이벤트에 대해 쿼리를 날리면 2007년 6월 1일을 인덱스로 탐색을 시켜서 Leaf 노드를 찾을 수 있습니다. 그런데 만약 년도에.. 2020. 10. 30.
[2] 인덱스 구조 이 글은 [친절한 SQL 튜닝] 을 학습하고 정리한 글입니다. 인덱스 튜닝에 대해 살펴보기 이전에, 인덱스 구조를 통해 핵심 원리를 짚고 넘어갑시다. 인덱스는, 해당 자료를 찾기 편하게끔 데이터와 개별된 구조를 만들어 놓은 것입니다. 데이터베이스 테이블에서 데이터를 찾는 방법은 1. 테이블 전체를 스캔하거나 2. 인덱스를 이용하는 방법 위 두가지밖에 없기 때문에, 인덱스는 SQL 튜닝에서 가장 먼저 학습해야 할 부분입니다. 인덱스 튜닝의 핵심 요소 인덱스는 큰 테이블에서 소량 데이터를 검색할 때 사용합니다. 일반적인 Online Transaction Processing 시스템에서는 소량 데이터를 주로 검색하므로 인덱스 튜닝이 매우 중요합니다. 인덱스 튜닝의 핵심은 크게 두가지로 나뉘는데 첫번째는 인덱스 .. 2020. 10. 30.