use-the-index-luke 저자 Markus Winand
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/explain-plan/sqlbase/operations
ㄴSQLbase Operations
가장 일반적인 SQLBase 실행 계획 작업에 대한 간단한 참조입니다. 그것은 기본적으로 API 설명서에서 나온 것으로, 다소 불완전한 것으로 보입니다. 고급 가이드에서는 물리적 운영에 대해서도 잠시 설명하지만 실행 계획에서 이러한 운영을 식별하는 방법에 대해서는 설명하지 않습니다.
API 설명서 -http://support.guptatechnologies.com/Docs/SQLBaseDoc116/api_function_reference.html#10065
물리적 운영- http://support.guptatechnologies.com/Docs/SQLBaseDoc116/chpt16.html#481
Index and Table Access
MySQL과 마찬가지로 SQLBase는 실행 계획에서 테이블당 한 줄의 액세스 권한을 표시합니다. 액세스 순서는 MySQL에서와 마찬가지로 하향식입니다. 실행 계획의 첫 번째 행은 액세스한 첫 번째 테이블에 해당합니다.
사용된 인덱스는 INDEX 열에도 표시됩니다.
SQLBase는 범위 대 고유 검색 또는 인덱스 전용 검색("인덱스 전용 테이블 액세스")에 대한 표시를 제공하지 않습니다.
다음 목록에서는 SQLBase에 알려진 물리적 작업의 간단한 교차 탭을 Oracle에 제공합니다. 유감스럽게도 이러한 물리적 작업 이름은 SQLBase의 실행 계획에 표시되지 않습니다:
Index leaf scan
오라클의 INDEX FULL SCAN:에 해당하며 인덱스를 순서대로 읽습니다. Index leaf scan에는 필요한 경우 후속 테이블 액세스도 포함됩니다.
Matching index scan
오라클의 INDEX RANGE/UNIQUE SCAN과 필요한 경우 후속 TABLE ACCESS BY INDEX ROWID에 해당합니다.
Joins
일반적으로 조인 작업은 한 번에 두 개의 테이블만 처리합니다. 쿼리에 조인이 더 많은 경우, 조인은 순차적으로 실행됩니다. 처음 두 테이블, 다음 테이블의 중간 결과입니다. 따라서 조인의 맥락에서 "테이블"이라는 용어는 "중간 결과"를 의미할 수도 있습니다.
SQLBase 문서와 실행 계획은 임시 테이블을 중간 결과로 나타냅니다. 설명서에는 Disk의 임시 테이블도 나와 있습니다. 즉, 중간 결과가 항상 구체화된다는 의미인지는 알 수 없습니다.
SQLBase는 다음 세 가지 기본 결합 기술을 모두 지원합니다:
NESTED LOOP / INDEX LOOP / Loop join with hash index
기본적으로 다음은 Nested Loop Joins. 입니다. 사용 중인 인덱스에 따라 다를 뿐입니다: 단순 루프 조인은 인덱스를 전혀 사용하지 않습니다(내부 테이블에서 전체 검색을 반복할 필요가 있음). (hash) 인덱스를 사용하는 루프 조인은 내부 테이블의 인덱스를 사용합니다(Equijoin의 경우 해시 인덱스일 수 있음).
MERGE JOIN
인덱스 병합 조인(실행 계획에서 MERGE JOIN로 표시됨)은 두 테이블의 조인 열에 인덱스가 있어야 하는 전제 조건을 가진 sort-merge 조인이므로 정렬 작업이 필요하지 않습니다.
HASH JOIN
이름에서 알 수 있듯이 Hash Join입니다.
Sorting and Grouping
SQLBase 실행 계획에서 정렬 또는 집계 작업을 나타내지 않습니다. 그러나 정렬 작업을 최적화할 수 있는 인덱스의 이점을 얻을 수 있습니다. SQLBase는 CREATE INDEX에서 ASC/DESC 한정자도 지원합니다.
Top-N Queries
상위 N개 쿼리는 세션 매개 변수를 사용하여 구현할 수 있습니다:
SET LIMIT n
SELECT ...
SET LIMIT off
이는 최적화에 영향을 미치지 않는 것으로 보입니다. 전체 결과의 작은 부분을 가져올 때 파이프라인 Top-N 실행을 선호하는 최적화 도구를 사용하려면 "Optimize first fetch" 옵션을 사용합니다:
SET OPTIMIZEFIRSTFETCH 1
이제 옵티마이저가 실행 계획을 최적화하여 첫 번째 행이 최대한 빨리 반환되도록 합니다. 나중에 full optimization mode 로 되돌리는 것을 잊지 마십시오
SET OPTIMIZEFIRSTFETCH 0
실행 계획은 Top-N limit의 존재를 나타내지 않으며 파이프라인 실행을 나타내는 정렬 작업이 없음을 나타내지 않습니다.
'use-the-index-luke' 카테고리의 다른 글
1.Indexes Can Degenerate (0) | 2024.02.05 |
---|---|
B.Myth Directory (0) | 2024.02.01 |
A.7-1 (SQLbase) Getting (0) | 2024.01.26 |
7.Gupta SQLBase (0) | 2024.01.25 |
A.6-2 (SQLite) Operations (1) | 2024.01.24 |