MSSQL과 ORACLE의 인덱스 크기

HoyaSoft 2019.11.05 09:05 Views : 998

안녕하세요.

평소 MSSQL만 사용하다가 ORACLE을 같이 다루게 되었는데요.

동일한 데이터를 양측 DBMS에 적재하는데 오라클의 용량이 두배정보 크게 저장되어서 궁금증이 생겨서 질문 드립니다.


질문요약

1. MSSQL 클러스터 인덱스의 용량은 왜이렇게 작은가?

2. 오라클의 인덱스 크기를 MSSQL 클러스터 인덱스처럼 줄일수 있는 방법은 없는가? 


테스트 내용 ( DBMS : SQL Server 2014 (14.0.1) )


1. INT 4바이트 컬럼 11개를 가지고 키컬럼이 10개인 테이블 생성

CREATE TABLE [dbo].[INDEX_SIZE_TEST](

[KEY1] int NOT NULL,

[KEY2] int NOT NULL,

[KEY3] int NOT NULL,

[KEY4] int NOT NULL,

[KEY5] int NOT NULL,

[KEY6] int NOT NULL,

[KEY7] int NOT NULL,

[KEY8] int NOT NULL,

[KEY9] int NOT NULL,

[KEY10] int NOT NULL,

[VAL]  int NULL

 CONSTRAINT [PK_INDEX_SIZE_TEST] PRIMARY KEY CLUSTERED 

(

[KEY1] ASC,

[KEY2] ASC,

[KEY3] ASC,

[KEY4] ASC,

[KEY5] ASC,

[KEY6] ASC,

[KEY7] ASC,

[KEY8] ASC,

[KEY9] ASC,

[KEY10] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [DATA]

) ON [DATA]

GO


2. 100만건의 테이스 데이터 입력

DECLARE @SEQ INT

SET @SEQ = 1



WHILE @SEQ <= 1000000

BEGIN

PRINT @SEQ

-- 작업 입력--

INSERT INTO [INDEX_SIZE_TEST](KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY10, VAL)

SELECT @SEQ, @SEQ, @SEQ, @SEQ, @SEQ, @SEQ, @SEQ, @SEQ, @SEQ, @SEQ, @SEQ

--------------


SET @SEQ = @SEQ + 1

END


테스트 결과 ( 데이터와 인덱스의 크기 )
-- 44바이트(11개컬럼) * 100만행 
select 44 * 1000000 / 1024. / 1024. -- MB용량변환

-- 예상크기
데이터 : 42MB
인덱스 : 38MB

-- 실제크기
데이터 : 52MB
인덱스 : 0.6MB

-- 인덱스 삭제후 사이즈 비교
데이터 : 52MB
인덱스 : 0MB

-- 인덱스 재생성후 사이즈 비교
데이터 : 54MB
인덱스 : 0.3MB

--> 4바이트 짜리 컬럼 11개로 이루어진 행이 100만건이 입력되는것을 테스트 하였습니다.
여기서... MSSQL 클러스터 인덱스의 실제 크기가 왜이렇게 작은건지.. 궁금합니다.

--> 오라클의 경우 테스트 예상대로의 사이즈로 데이터와 인덱스가 생성되었습니다.
No. Subject Author Date Views
Notice [IT재직자] 개강임박!! 올해 마지막 무료 및 국비지원 교육 (JAVA, 리눅스 기초/고급 , CCNA, CCIE 등) 코난(김대우) 2022.12.02 101
Notice 2022년 11월 SQLER의 강좌 업데이트 리스트 코난(김대우) 2022.12.01 24
Notice 2022 공개SW 페스티벌 - Open Up 코난(김대우) 2022.12.01 15
10533 Database Table 설계 관련 [2] 뽀야미 2020.01.02 850
10532 SSMS 쿼리 실행 출력 값이 2012 버전에서 다르게 나오는 현상 [1] 천재sizin 2020.01.01 871
10531 동일 테이블내에 id가 다른데 이름이 같경우 찾는 방법 문의드립니다.. [3] 우꾸무꾸 2019.12.20 912
10530 데이터베이스 복원 문의드립니다. 베로 2019.12.20 752
10529 쿼리 내 맨 뒤 공백 제거 [2] adsd1234 2019.12.17 1068
10528 초보가 sql 2008 에서 한글 질문드립니다. [1] 민상리 2019.12.14 849
10527 바인드 변수 조회할 수 있나요?? [1] 세기말텐션 2019.12.13 1046
10526 조인하여 가장 많은 값의 수를 도출하는 쿼리 질문있습니다! [2] SULLU 2019.12.08 933
10525 문자열 특정 자릿수마다 문자넣기 [2] 안돼요 2019.12.05 956
10524 쿼리 질문입니다 집계함수 관련 .. [1] 초코송이 2019.12.04 833
10523 SQLServer에서 프로시저로 결과값 텍스트 파일로 받을시 질문있습니다. [2] 우우후 2019.12.03 864
10522 쿼리 질문. 도와주세요 [1] 릴리_300837 2019.11.28 992
10521 SQL 관련 에러메세지 시원한라면 2019.11.23 791
10520 DeadLock_Timeout 관련 문의 [1] 황무지 2019.11.21 893
10519 MS SQL 시스템 데이터 베이스 [1] 백업엔지니어 2019.11.15 915
10518 외부에서의 sql접속을 막고 싶은데요 [1] 카루카루 2019.11.14 1005
10517 MSSQL 2008 -> ORACLE 12c Linkedserver 문의 [1] 멋진벼리 2019.11.11 1083
10516 같은 분류별 number 부여 [1] 깨비꼬비 2019.11.08 888
10515 쿼리문의 - 유저 출,입 기록 [1] adsd1234 2019.11.07 983
» MSSQL과 ORACLE의 인덱스 크기 [2] HoyaSoft 2019.11.05 998





XE Login

테스트 팝업
Close