본문 바로가기

SQL3

[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.
[1] SQL 처리 과정과 I/O 이 글은 [친절한 SQL 튜닝] 을 학습하고 정리한 글입니다. 1.1 SQL 파싱과 최적화 SQL은 집합적이고 선언적인 질의 언어이기 때문에, 질의를 통해 결과 집합을 얻게 됩니다. 그런 결과 집합을 얻기 위해서는 절차적인 과정이 필요한데, 이 과정을 SQL 옵티마이저가 대신해줍니다. "SQL 최적화" 란 DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행 가능한 상태로 만드는 전 과정을 의미합니다. 실제 최적화 과정을 세분화 하면 다음과 같습니다 1. SQL 파싱 - SQL Parser가 파싱을 수행합니다 2. SQL 최적화 - Optimizer가 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행경로를 생성한 후 비교하여 가장 효율적인 방식을 선택합니다. (데이터베이스 성능의 핵심) 3.. 2020. 10. 20.