목차
1. 카티션 곱, 동등조인, 자연조인, 왼쪽외부조인, 오른쪽외부조인에 대해 설명하라
2. 관계대수에서 집합 연산자의 호환성(compatibility)에 대해 설명해 봅시다.
3. SQL의 SELECT 구문은 관계 대수의 SELECTION과는 다르다. 그 차이점을 생각해 봅시다.
4. 기본 인덱스와 보조 인덱스의 유사점과 차이점을 설명하라
5. INSURED_AUTOS 테이블은 복합 애트리뷰트 (YEAR, MAKE, MODEL)와 단일 애트리뷰트 (VIN)에 인덱스가 정의되어 있다. 다음 SELECT문 중에서 이들 인덱스의 혜택을 보지 못하는 것은 첫 번째 이다. 그 이유와 나머지 2~4번은 왜 인덱스 이용이 가능한 지 설명하라
① select vin from insured_autos where make='Ford' and model='Taurus';
② select count(*) from insured_autos where make='Ford' and year=1998;
③ select vin from insured_autos where year=1998 and owner='Dahlman';
④ select min(year) from insured_autos where make='Ford' and model='Taurus';
2. 관계대수에서 집합 연산자의 호환성(compatibility)에 대해 설명해 봅시다.
3. SQL의 SELECT 구문은 관계 대수의 SELECTION과는 다르다. 그 차이점을 생각해 봅시다.
4. 기본 인덱스와 보조 인덱스의 유사점과 차이점을 설명하라
5. INSURED_AUTOS 테이블은 복합 애트리뷰트 (YEAR, MAKE, MODEL)와 단일 애트리뷰트 (VIN)에 인덱스가 정의되어 있다. 다음 SELECT문 중에서 이들 인덱스의 혜택을 보지 못하는 것은 첫 번째 이다. 그 이유와 나머지 2~4번은 왜 인덱스 이용이 가능한 지 설명하라
① select vin from insured_autos where make='Ford' and model='Taurus';
② select count(*) from insured_autos where make='Ford' and year=1998;
③ select vin from insured_autos where year=1998 and owner='Dahlman';
④ select min(year) from insured_autos where make='Ford' and model='Taurus';
본문내용
인덱스가 없으면 선형탐색을 이용해야 한다. 파일의 키가 아닌 필드에 대한 보조 인덱스도 만들 수 있다. 이 경우 여러 개의 레코드들이 인덱스 필드에 같은 값을 가질 수 있는데,
- 선택사항 1은 같은 K(i)값을 갖는 인덱스 엔트리들을 각 레코드당 하나씩 여러개 두는 것이다.
- 선택사항 2는 인덱스 엔트리들에 대해서 가변길이(variable-length) 레코드를 갖는 것이다.
- 선택사항 3은 인덱스 엔트리들 자체는 고정길이를 갖고 각 인덱스 필드 값에 대해서 하나의 엔트리를 갖도록 하지만, 각 엔트리는 여러 개 레코드 포인터들을 갖는 블록을 가리킨다. 이 방법이 가장 일반적으로 사용된다.
4. 기본 인덱스와 보조 인덱스 생성하기
1) 기본 XML 인덱스 생성하기
USE AdventureWorks;
GO
IF EXISTS (SELECT * FROM sys.indexes
WHERE name = N'PXML_ProductModel_CatalogDescription')
DROP INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel;
GO CREATE PRIMARY XML INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel (CatalogDescription);
GO
2) 보조 XML 인덱스 생성하기
USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
WHERE name = N'IXML_ProductModel_CatalogDescription_Path')
DROP INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel;
GO
CREATE XML INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel (CatalogDescription)
USING XML INDEX PXML_ProductModel_CatalogDescription FOR PATH ;
GO
5. 결론
인덱스는 꼭 필요한 부분이 아니기 때문에 동적으로 만들었다가 제거할 수 있다. 특정한 필드를 탐색조건으로 파일을 자주 접근해야 한다면 이 필드에 대해 보조 인덱스를 사용한다. 모든 필드들에 대해서 각각의 보조 인덱스를 갖는 파일을 완전 역 파일(fully inverted file) 이라고한다. 인덱스는 일반적으로 B+ 트리로 구현하기 때문에 동적으로 갱신하여 레코드들의 삽입과 삭제를 반영한다. 순서 키필드에 대한 다단계 기본 인덱스를 갖는 순서파일을 인덱스 순차파일이라고 한다.
INSURED_AUTOS 테이블은 복합 애트리뷰트 (YEAR, MAKE, MODEL)와 단일 애트리뷰트 (VIN)에 인덱스가 정의되어 있다. 다음 SELECT문 중에서 이들 인덱스의 혜택을 보지 못하는 것은 첫 번째 이다. 그 이유와 나머지 2~4번은 왜 인덱스 이용이 가능한 지 설명하라
① select vin from insured_autos where make='Ford' and model='Taurus';
② select count(*) from insured_autos where make='Ford' and year=1998;
③ select vin from insured_autos where year=1998 and owner='Dahlman';
④ select min(year) from insured_autos where make='Ford' and model='Taurus';
복합 애트리뷰트(YEAR, MAKE, MODEL)순으로 인덱스가 지정이 되면 인덱스에 저장되는 내용도 YEAR, MAKE, MODEL순 입니다. 다시 말해 YEAR가 가장 빠른순으로 정렬을 하고, 그 다음에 각 YEAR별로 MAKE가 가장 빠른순으로 정렬하고 그 다음에 각각의 YEAR,MAKE별로 MODEL이 가장 빠른 순으로 정렬을 하는겁니다.
그러니 검색을 하실때 YEAR로 검색을 거나 YEAR와 MAKE로 검색을 하거나 YEAE, MAKE, MODEL로 검색을 하면 인덱스 사용이 가능합니다. YEAR와 MODEL로 검색을 하더라도 YEAR에 대해서는 인덱스를 사용하겠네요. 그러나 MAKE나 MODEL 단독으로 검색을 하거나 MAKE와 MODEL로 같이 검색을 하면 데이터값으로 정렬이 되어있는 인덱스에서 처음부터 끝까지 다 검색해야하기 때문에 인덱스에서 검색을 하는거와 테이블에서 검색하는것이 다를 바가 없습니다. 그러니 인덱스를 사용하지 않는거죠.
그런데 4번은 make와 model로 검색을 하는데 왜 인덱스를 사용하느냐?
그건 min(year)를 구하는것이기 때문에 그렇죠.
인덱스에서 찾는다면 year의 최소값이니까 인덱스의 제일 마지막 부터 찾기 시작해서 make='Ford' and model='Taurus'인것을 찾으면 되니까 인덱스를 사용하는게 효과적입니다.
INDEX1 : VIN
INDEX2 : YEAR+MAKE+MODEL
1~4번 모두 where절에 and로 묶여있다.
인덱스는 year,make,model순으로 타야하는데 and절 일때는 순서가 상관없다.
2번은 where절에 year,make가 있으니깐 이거 2개로 인덱스 가능,
3번은 where절에 year,owner이 있으니깐 year에 해당하는 만큼은 인덱스 가능,
4번은 where절에는 make,model만 있지만 select절에 year가 있으므로 year, make, model로 인덱스가 가능하다.
하지만 1번은 결합인덱스의 첫컬럼인 year가 존재하지 않으므로 인덱스를 타지 못한다. 그리고 vin도 where절에는 없으므로 인덱스가 타지 못한다. 4번에서 인덱스를 타는 것처럼 select절 + where절이 같이 쓰이면 인덱스가 가능하다.
여기서 인덱스를 가장 잘 쓰려면
select vin
from insured_autos
where year=1998
and make='Ford'
and model='Taurus';
- 선택사항 1은 같은 K(i)값을 갖는 인덱스 엔트리들을 각 레코드당 하나씩 여러개 두는 것이다.
- 선택사항 2는 인덱스 엔트리들에 대해서 가변길이(variable-length) 레코드를 갖는 것이다.
- 선택사항 3은 인덱스 엔트리들 자체는 고정길이를 갖고 각 인덱스 필드 값에 대해서 하나의 엔트리를 갖도록 하지만, 각 엔트리는 여러 개 레코드 포인터들을 갖는 블록을 가리킨다. 이 방법이 가장 일반적으로 사용된다.
4. 기본 인덱스와 보조 인덱스 생성하기
1) 기본 XML 인덱스 생성하기
USE AdventureWorks;
GO
IF EXISTS (SELECT * FROM sys.indexes
WHERE name = N'PXML_ProductModel_CatalogDescription')
DROP INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel;
GO CREATE PRIMARY XML INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel (CatalogDescription);
GO
2) 보조 XML 인덱스 생성하기
USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
WHERE name = N'IXML_ProductModel_CatalogDescription_Path')
DROP INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel;
GO
CREATE XML INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel (CatalogDescription)
USING XML INDEX PXML_ProductModel_CatalogDescription FOR PATH ;
GO
5. 결론
인덱스는 꼭 필요한 부분이 아니기 때문에 동적으로 만들었다가 제거할 수 있다. 특정한 필드를 탐색조건으로 파일을 자주 접근해야 한다면 이 필드에 대해 보조 인덱스를 사용한다. 모든 필드들에 대해서 각각의 보조 인덱스를 갖는 파일을 완전 역 파일(fully inverted file) 이라고한다. 인덱스는 일반적으로 B+ 트리로 구현하기 때문에 동적으로 갱신하여 레코드들의 삽입과 삭제를 반영한다. 순서 키필드에 대한 다단계 기본 인덱스를 갖는 순서파일을 인덱스 순차파일이라고 한다.
INSURED_AUTOS 테이블은 복합 애트리뷰트 (YEAR, MAKE, MODEL)와 단일 애트리뷰트 (VIN)에 인덱스가 정의되어 있다. 다음 SELECT문 중에서 이들 인덱스의 혜택을 보지 못하는 것은 첫 번째 이다. 그 이유와 나머지 2~4번은 왜 인덱스 이용이 가능한 지 설명하라
① select vin from insured_autos where make='Ford' and model='Taurus';
② select count(*) from insured_autos where make='Ford' and year=1998;
③ select vin from insured_autos where year=1998 and owner='Dahlman';
④ select min(year) from insured_autos where make='Ford' and model='Taurus';
복합 애트리뷰트(YEAR, MAKE, MODEL)순으로 인덱스가 지정이 되면 인덱스에 저장되는 내용도 YEAR, MAKE, MODEL순 입니다. 다시 말해 YEAR가 가장 빠른순으로 정렬을 하고, 그 다음에 각 YEAR별로 MAKE가 가장 빠른순으로 정렬하고 그 다음에 각각의 YEAR,MAKE별로 MODEL이 가장 빠른 순으로 정렬을 하는겁니다.
그러니 검색을 하실때 YEAR로 검색을 거나 YEAR와 MAKE로 검색을 하거나 YEAE, MAKE, MODEL로 검색을 하면 인덱스 사용이 가능합니다. YEAR와 MODEL로 검색을 하더라도 YEAR에 대해서는 인덱스를 사용하겠네요. 그러나 MAKE나 MODEL 단독으로 검색을 하거나 MAKE와 MODEL로 같이 검색을 하면 데이터값으로 정렬이 되어있는 인덱스에서 처음부터 끝까지 다 검색해야하기 때문에 인덱스에서 검색을 하는거와 테이블에서 검색하는것이 다를 바가 없습니다. 그러니 인덱스를 사용하지 않는거죠.
그런데 4번은 make와 model로 검색을 하는데 왜 인덱스를 사용하느냐?
그건 min(year)를 구하는것이기 때문에 그렇죠.
인덱스에서 찾는다면 year의 최소값이니까 인덱스의 제일 마지막 부터 찾기 시작해서 make='Ford' and model='Taurus'인것을 찾으면 되니까 인덱스를 사용하는게 효과적입니다.
INDEX1 : VIN
INDEX2 : YEAR+MAKE+MODEL
1~4번 모두 where절에 and로 묶여있다.
인덱스는 year,make,model순으로 타야하는데 and절 일때는 순서가 상관없다.
2번은 where절에 year,make가 있으니깐 이거 2개로 인덱스 가능,
3번은 where절에 year,owner이 있으니깐 year에 해당하는 만큼은 인덱스 가능,
4번은 where절에는 make,model만 있지만 select절에 year가 있으므로 year, make, model로 인덱스가 가능하다.
하지만 1번은 결합인덱스의 첫컬럼인 year가 존재하지 않으므로 인덱스를 타지 못한다. 그리고 vin도 where절에는 없으므로 인덱스가 타지 못한다. 4번에서 인덱스를 타는 것처럼 select절 + where절이 같이 쓰이면 인덱스가 가능하다.
여기서 인덱스를 가장 잘 쓰려면
select vin
from insured_autos
where year=1998
and make='Ford'
and model='Taurus';
추천자료
- [가족복지][가족문제]현대가족의 성격, 가족제도의 유형, 정보사회에서의 가족관계 변화, 가...
- [커뮤니케이션][대화][의사소통][커뮤니케이션 이론][인간관계][대인관계]커뮤니케이션의 개...
- 스포츠와 집합행동
- 동서양 세계관의 건축에 대한 영향과 관계 사례분석 고찰
- 문학과 종교의 관계
- 집합건물(아파트) 처분의 일체성
- [국제경제관계의 제유형] 이념적, 기능적, 제도적 분류
- 칸토르가 들려주는 집합 이야기 [줄거리/ 요약]
- 동기부여 이론 중 인간관계이론의 개념 및 사회복지 조직관리에 어떻게 적용할 수 있는지 설명
- [유아수학교육]수 개념 (수의 의미와 사용, 수 세기와 발달 단계, 수들 간의 관계, 수의 상대...
- ★ 이산수학 - 정의역, 치역, 관계행렬, A=B일 때, 관계 R의 방향 그래프,반사관계, 비반사관...
- 고전이론과 인간관계이론의 개념과 장단점을 설명하고 사회복지조직에 적용 가능성에 대하여 ...
- 심리학에게묻다=가계도 표준기호를 활용하여 자신의 가계도를 작성한 후, 자신의 가계도에서 ...
- 사회복지행정론)조직 이론 중 신고전론에 속하는 인간관계론을 중심으로 조직 이론을 논하시오.
소개글