본문 바로가기
DB∙SQL/MySQL

[MySQL] MySQL에서 인덱스, 뷰, 스토어드 프로시저 사용하기

by 서현 SEOHYEON 2023. 7. 19.

1️⃣ 인덱스 실습

 

· 기본적으로 SQL문을 실행하면 Full Table Scan 으로 실행된다.이것은 테이블의 처음부터 끝까지 탐색하며 찾은 것

(Result Grid 창에서 오른쪽부분 맨 아래 쪽으로 화살표 내리면 Execution Plan 탭 있는데 거기서 확인 가능)

 

 

· 인덱스를 만드는 명령어 실행. 인덱스는 열에 지정

CREATE INDEX idx_member_name ON member(member_name);

member 테이블의 member_name 열에 인덱스를 지정하라는 뜻

 

 

· 인덱스 생성 후 아까의 SQL문을 다시 수행해보고,

Execution Plan 탭을 보면 Non-Unique Key Lookup으로 되어있다. 이는 인덱스를 통해 결과를 찾았다는 것

 

 

2️⃣ 뷰 실습하기

 

· 기본적인 뷰를 만들어보기 위해 다음 명령어를 실행

CREATE VIEW member_view
AS
SELECT * FROM member;

 

 

· 이제 테이블이 아닌 뷰에 접근해보자. 

다음 명령어 실행

SELECT * FROM member_view;

잘 실행됨을 볼 수 있다.

 

 

3️⃣ 스토어드 프로시저 실습하기

 

· 만약 아래와 같은 두 명령어를 엄청 자주 실행하게 된다고 가정해보자.

SELECT * FROM member WHERE member_name = "아이유";
SELECT * FROM member WHERE member_id = "ccc";

매번 입력한다면 오타 발생 등 불편함이 있을 것이다. 특히 명령이 더 많아진다면...

 

 

· 두 SQL을 하나의 스토어드 프로시저로 만들어보자.

다음과 같이 입력한다

DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
	SELECT * FROM member WHERE member_name = "아이유";
	SELECT * FROM member WHERE member_id = "ccc";
END //
DELIMITER ;

자세한 문법은 나중에 설명...

DELIMITER 가 스토어드 프로시저를 묶어주는거라고 지금은 생각하자. 그리고 BEGIN 과 END 사이에 SQL을 넣어준다.

 

 

· 이제 만든 스토어드 프로시저를 호출하면 두 줄의 SQL을 실행할 필요가 없다.

실행은 다음과 같이 입력

CALL myProc();

잘 실행됨을 확인 가능

 

참고로 옆의 Schemas 탭에서도 잘 생성됐음을 확인 가능

프로시저를 지우고 싶다면 우클릭 후 Drop Stored Procedure 를 선택하면 된다

 

댓글