개발/SQL

[MySQL] MySQL Workbench로 인덱스, 뷰, 스토어드 프로시저 만들기

하빈H 2022. 9. 19. 18:43

1. 인덱스

 

테이블에 데이터가 많아질수록 조회할 때 시간이 많이 소요되는데, 인덱스를 설정할 경우 빠르게 조회할 수 있다.

 

인덱스를 설정하지 않을 경우 아래와 같이 Full Table Scan을 하게 된다.

 

 

인덱스는 CREATE INDEX 인덱스명 ON 테이블명(컬럼명) 으로 생성한다.

CREATE INDEX idx_member_name ON member(member_name);

 

idx_member_name이라는 인덱스가 잘 생성된 것을 확인할 수 있다.

 

생성 후에 인덱스 생성 전에 실행했던 조회 쿼리를 다시 실행해보면 Plan이 변경된 것을 확인할 수 있다.

 

2. 뷰

 

뷰는 실제로 있는 테이블이 아닌 하나 이상의 테이블의 데이터를 선택하여 가상으로 정의한 것이다.

 

뷰는 CREATE VIEW 뷰명 AS SELECT... 로 생성한다.

CREATE VIEW member_view
AS
	SELECT * FROM member;

 

뷰 생성 후 FROM절에 뷰 이름을 써서 조회하면 데이터가 잘 조회된다.

 

 

3. 스토어드 프로시저

 

스토어드 프로시저를 생성하면 여러 쿼리를 한 번에 실행할 수 있다.

 

DELIMITER // 와 DELIMITER ; 는 시작과 끝을 구분하기 위해 사용하는 예약어이다.

아래 예시와 같이 프로시저를 정의하면 되고, BEGIN ~ END 사이에 실행하고자 하는 쿼리문들을 작성하면 된다.

DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
	SELECT * FROM member WHERE member_name = '아이유';
    SELECT * FROM product WHERE product_name = '삼각김밥';
END //
DELIMITER ;

 

프로시저는 CALL 스토어드프로시저명 으로 실행할 수 있다.

CALL myProc();