인덱스 : 책의 제일 뒤에 붙어 있는 '찾아보기' or '색인'과 같은 개념
AdventureWorks내 Production.Product 테이블 복사 SQL문
SELECT Name, ProductNumber, Listprice, Size INTO indexTBL FROM AdventureWorks.Production.Product;
위 이미지와 같이 테이블 데이터를 복사
01. 인덱스를 생성 하지 않고 SQL문 실행 하기
SELECT * FROM indexTBL WHERE Name = 'Minipump';
상단의 실제 실행 계획 포함(Ctrl + M) 선택 후 SQL문 실행
indexTBL 검색 비용이 100% 확인 할 수 있음
02. 인덱스를 생성 후 SQL문 실행 하기
CREATE INDEX idx_indexTBL_Name ON indexTBL(Name);
SELECT * FROM indexTBL WHERE Name = 'Minipump';
indexTBL 검색 비용이 50% 확인 할 수 있음
뷰 : 가상의 테이블 or 진짜 테이블에 Link된 개념
ShopDB를 통한 뷰 생성
CREATE VIEW uv_memberTBL
AS
SELECT memberName, memberAddress FROM memberTBL;
위 테이블의 뷰 항목에 접근 시 uv_memberTBL 생성 확인 가능
SELECT * FROM uv_memberTBL;
SQL Server에서 제공하는 프로그램 기능
ShopDB를 통한 저장 프로시저 생성
CREATE PROCEDURE myProc
AS
SELECT * FROM memberTBL WHERE memberName = '당탕이';
SELECT * FROM productTBL WHERE ProductName = '냉장고';
위 테이블의 프로그램 기능 - 저장프로시저에 접근 시 myProc 생성 확인 가능
EXECUTE myProc;
테이블에 부착되어 INSERT, UPDATE, DELETE 작업이 발생되었을 때 실행되는 코드
CREATE TABLE deletedMemberTBL
(
memberID char(8),
memberName nchar(5),
memberAddress nchar(20),
deletedDate date
);
위 ShopDB 데이터베이스 항목에 접근 시 deletedMemberTBL 생성 확인 가능
CREATE TRIGGER trg_deletedMemberTBL
ON memberTBL
AFTER DELETE
AS
INSERT INTO deletedMemberTBL
SELECT memberID, memberName, memberAddress, GETDATE() FROM deleted;
위 memberTBL 테이블 내 트리거 접근 시 trg_deletedMemberTBL 생성 확인 가능
DELETE memberTBL WHERE memberName = '당탕이';
트리거 동작으로 인한 1개의 행이 영향 받음 Message 2번 발생
SELECT * FROM memberTBL;
SELECT * FROM deletedMemberTBL;
각 테이블 조회 시 위 이미지와 같이 조회되는 것을 확인 할 수 있다.