오라클에서 계산 컬럼(가상 컬럼이라고도 한다)을 만들려면 GENERATED [ALWAYS] AS 구문을 이용한다. 코드 1-8은 Order_Details 테이블에 총 금액 컬럼을 생성하는 오라클 SQL이다.
코드 1-8 오라클에서 인라인 표현식을 사용한 테이블 정의
CREATE TABLE Order_Details (
OrderNumber int NOT NULL,
OrderNumber int NOT NULL,
ProductNumber int NOT NULL,
QuotedPrice decimal(15,2) DEFAULT 0 NULL,
QuantityOrdered smallint DEFAULT 0 NULL,
ExtendedPrice decimal(15,2)
GENERATED ALWAYS AS (QuotedPrice * QuantityOrdered)
);
이 시점에서 이런 의문이 들 것이다. 지금까지 많은 지면을 할애해 계산 컬럼을 사용하는 방법을 설명했는데, 도대체 이 BETTER WAY 제목은 ‘왜 계산 데이터를 저장하면 좋지 않은지 이해하자’일까? 아쉽게도 나쁜 소식을 전해야겠다. 대용량 온라인 데이터 입력용 테이블에서 이런 식으로 계산 컬럼을 추가하는 것은 서버에 심각한 부하가 걸려 응답 시간이 현저히 느려진다.