Database/SQL Server (16) 썸네일형 리스트형 <SQL Server> 16. 인덱스 - 4 인덱스 - 4인덱스 별 성능 비교 인덱스를 생성하고 삭제하는 방법에 대해서 익혔으니, 이번에는 클러스터형 인덱스와 비클러스터형 인덱스, 그리고 인덱스가 없을 때의 성능 차이를 직접 확인실습4 - 인덱스가 없을 때 클러스터형 인덱스, 비클러스터형 인덱스의 성능을 비교하자.step0. 사전 준비0-1 [실제 실행 계획]이 끄기0-2 실습 할 데이터 베이스 생성USE tempdb; CREATE DATABASE indexDB; GOSQL0-3 인덱스 정보 편하게 볼 수 있는 저장 프로시저 생성 CREATE PROCEDURE usp_IndexInfo @tablename sysname AS SELECT @tablename AS '테이블이름', I.name AS '인덱스이름', I.. <SQL Server> 15. 인덱스 - 3 인덱스 - 3클러스터형 인덱스와 비클러스터형 인덱스가 혼합되어 있을 경우지금까지는 테이블에 클러스터형 인덱스만 있거나, 비클러스터형 인덱스만 있는 경우를 살펴보았다. 하지만, 현실적으로 하나의 테이블에 클러스터형과 비클러스터형의 인덱스가 혼합된 경우가 더 많다.실습2 - 한 테이블에 클러스터형 인덱스와 비클러스터형 인덱스가 모두 존재할 경우를 살펴보자.step0. 테이블 생성USE tempdb; CREATE TABLE mixedTbl ( userID char(8) NOT NULL, name nvarchar(10) NOT NULL, addr nchar(2) ); GO INSERT INTO mixedTbl VALUES('LSG', '이승기', '서울');.. <SQL Server> 14. 인덱스 - 2 인덱스 - 2인덱스의 내부 작동인덱스의 내부적인 작동을 이해하기 위해서는 몇 가지 개념부터 알아두어야 한다.B-Tree군형 트리B-Tree는 ‘자료 구조’에 나오는 범용적으로 사용되는 데이터의 구조다. 이 구조는 주로 인덱스를 표현할 때와 그 외에서도 많이 사용된다. 이름에서도 알 수 있듯이 B-Tree는 균형이 잡힌 트리다. 다음 그림을 보자.B-Tree의 기본 구조노드는 트리 구조에서 데이터가 존재하는 공간이다. 즉, 갈라지는 부분의 ‘마디’를 뜻한다. 위 그림에서는 노드가 4개가 있다. 루트 노드는 노드의 가장 상위 노드를 말한다. 모든 출발은 이 루트 노드에서 시작된다. 리프 노드는 제일 잎 노드, 말단 노드라는 의미로 마지막에 있는 노드를 말한다. 위 그림에서는 두 단계의 레벨이 표현되었지만, .. <SQL Server> 13. 인덱스 - 1 인덱스 - 1인덱스 개요인덱스는 데이터베이스에 존재하지 않더라도 데이터를 조회하고 변경하는 데 아무런 문제가 되지는 않는다. 그럼에도 인덱스 자체는 데이터베이스의 성능에 아주 중요한 역할을 하기 때문에 없어서는 안 될 중요한 데이터베이스 개체다.인덱스가 하는 가장 중요한 역할은 데이터를 조회할 때(특히 SELECT)빠르게 접근하도록 도와주는 것이다. 따라서 인덱스를 잘만 사용하면 데이터에 접근하는 시간이 놀랄 만큼 빨라진다. 데이터베이스를 튜닝할 때도 가장 큰 효과를 볼 수 있는 부분이 인덱스다. 이 장을 잘 이해한다면 튜닝의 핵심내용도 이해하는 것이다.모든 것에는 좋은 점이 있다면 단점도 있기 마련이다. 비타민이 사람 몸에 좋은 것은 누구나 아는 사실이지만, 적절한 용량을 적합한 시기에 먹어야만 효과를.. <SQL Server> 12. 테이블과 뷰 - 5 테이블과 뷰 - 5메모리 액세스에 최적화된 테이블메모리 액세스에 최적화된 테이블(줄여서 ‘메모리 테이블’)은 SQL Server 2014에서 처음 지원되었으며, SQL Server 2016에서 그 기능이 더욱 개선되고 향상되었다.이름에서 알 수 있듯이 메모리 테이블은 디스크가 아닌 메모리(RAM)에 테이블이 존재한다. 그 결과로 테이블에 읽기/쓰기 속도가 획기적으로 향상되었다. 문제는 메모리는 전원이 꺼지면 그 내용이 모두 사라지기 때문에 이를 방지하기 위해서 메모리의 테이블의 보조 복사본이 디스크에서도 유지 관리된다. Microsoft는 메모리 테이블을 사용하면 서버 컴퓨터 한 대가 기존 서버 5~10대 분량의 처리되므로 하드웨어 비용이 획기적으로 줄어든다고 주장한다.메모리 테이블을 사용하기 위해서는 .. <SQL Server> 11. 테이블과 뷰 - 4 테이블과 뷰 - 4테이블 수정테이블 수정은 ALTER TABLE 문을 사용한다. 앞에서 제약 조건을 추가할 경우에 ALTER TABLE 구문을 사용해 왔는데, 이미 생성된 테이블에 무엇인가를 추가/변경/수정/삭제하는 것은 모두 ALTER TABLE을 사용한다.열 추가회원 테이블(userTbl)에 회원의 홈페이지 주소를 추가하려면 아래와 같다.USE tableDB; ALTER TABLE userTbl ADD homepage NVARCHAR(30) -- 열 추가 DEFAULT 'http://www.hanb.co.kr' -- 디폴트값 NULL; -- Null 허용함SQL열을 추가하면 기본적으로 가장 뒤에 추가가 된다. 이 열의 순서를 변경하는 가장 쉬운 방법은 SSMS의 개체 탐색기에서 해당.. <SQL Server> 10. 테이블과 뷰 - 3 테이블과 뷰 - 3UNIQUE 제약 조건UNIQUE 제약 조건은 ‘중복되지 않는 유일한 값’을 입력해야 하는 것이다. 이것은 기본 키와 거의 비슷하며 차이점은 UNIQUE는 NULL 값을 허용한다는 점뿐이다. 단, NULL도 한 개만 허용된다.NULL이 두 개라면 이미 유일하지 않는 것이다.회원 테이블을 예로 든다면 주로 Email 주소를 Unique로 설정하는 경우가 많이 있다.다음은 기존의 회원 테이블에 E-Mail 열을 추가한 경우다. 세 문장은 모두 결과가 같다.CREATE TABLE userTbl ( userID char(8) NOT NULL PRIMARY KEY, ..... email char(30) NULL UNIQUE ); CREATE TABLE userTbl ( userID char(8).. <SQL Server> 09. 테이블과 뷰 - 2 테이블과 뷰 - 2제약 조건제약 조건이란 데이터의 무결성을 지키기 위한 제한된 조건을 의미한다. 즉, 특정 데이터를 입력할 때 무조건적으로 입력되는 것이 아닌, 어떤 조건을 만족했을 때에만 입력되도록 제약할 수 있다.간단한 예로 인터넷 쇼핑몰에 회원 가입을 할 때, 동일한 주민등록번호로 다시 가입을 한다면 가입이 안될 것이다. 그 이유는 주민등록번호 열은 동일한 것이 들어갈 수 없는 조건이 설정되어 있기 때문이다.SQL Server는 데이터의 무결성을 위해서 다음 6가지 제약 조건을 제공한다.•PRIMARY KEY 제약 조건•FOREIGN KEY 제약 조건•UNIQUE 제약 조건•CHECK 제약 조건•DEFALUT 정의•NULL 값 허용기본 키 제약 조건테이블에 있는 많은 행의 데이터를 구분할 수 있는 .. 이전 1 2 다음