'PERSISTED'에 해당되는 글 1건

  1. 2013.07.12 PERSISTED Option of Computed Columns
MS SQL2013.07.12 15:45

 

[내용]

 

테이블 정의에서 사용되는 계산된 열의 옵션인 PERSISTED 옵션에 대한 내용과 사용법에 대해 알아봅시다.

 

 

[환경]

 

SQL Server 2012

 

 

[설명]

 

1. 계산된 : 열에 직접 데이터 형식이 정의되지 않고, 계산 공식이 정의됨으로써 테이블을 조회할 계산 공식에 따라 결과만 보여지는 열입니다. 물리적으로 저장 되지 않고, 이후에 참조되는 과정에서 자동으로 계산된 값을 보여주게 됩니다.

 

2. PERSISTED 옵션: 계산된 열이 SELECT 계산되지 않고 INSERT UPDATE시에 물리적으로 저장되게 하기 위한 옵션입니다. 옵션을 사용하면 SELECT 발생하는 부하를 줄일 있습니다.

 

[Test 방법]

 

1. non PERSISTED column

 

-- 테이블 생성

CREATE TABLE dbo.Employee(

EmployeeName char(6),

Get_money tinyint,

Add_money tinyint,

Remain_money AS (Get_money+Add_money)

)

GO

 

-- 데이터 입력

INSERT INTO dbo.Employee(EmployeeName, Get_money, Add_money)

VALUES(N'홍길동', 250, 5)

GO

 

INSERT INTO dbo.Employee(EmployeeName, Get_money, Add_money)

VALUES(N'임꺽정', 250, 6)

GO

 

-- 조회

SELECT * FROM dbo.Employee

 

 

2. PERSISTED column

 

-- 테이블 생성(PESISTED 사용)

CREATE TABLE dbo.EmployeeP(

EmployeeName char(6),

Get_money tinyint,

Add_money tinyint,

Remain_money AS (Get_money+Add_money) PERSISTED

)

GO

 

INSERT INTO dbo.EmployeeP(EmployeeName, Get_money, Add_money)

VALUES(N'홍길동', 250, 5)

GO

 

INSERT INTO dbo.EmployeeP(EmployeeName, Get_money, Add_money)

VALUES(N'임꺽정', 250, 6)

GO

 

 

[결과]

 

PERSISTED 옵션을 사용하면, INSERT UPDATE 시에 계산을 미리하여 저장하기 때문에 SELECT 부하를 줄여줄 있을 뿐만 아니라 INSERT 시에 잘못된 정보가 입력되는 것을 미리 차단할 있어 데이터의 무결성을 가져 있습니다.

 

 

[참고]

 

http://msdn.microsoft.com/en-us/library/ms191250(v=sql.105).aspx

 

 

신고
Posted by TM ~ing