[DB] 뷰, 저장 프로시저, 인덱스

cowmin·2025년 6월 16일

1. 뷰(View)

1.1 뷰란?

하나 이상의 테이블을 조합한 가상 테이블
실제 테이블처럼 행과 열을 가지지만, 실제 데이터를 저장하는 것은 아니다.

1.2 뷰의 장점

  • 특정 사용자에게 테이블 전체가 아닌 필요한 부분만을 보여주는 것이 가능
  • 복잡한 쿼리를 단순화
  • 쿼리의 재사용 가능

1.3 뷰의 단점

삽입, 삭제, 갱신 작업에 많은 제한 사항이 있다.

1.4 뷰 생성 쿼리

CREATE VIEW 뷰이름 AS
SELECT 컬럼1, 컬럼2
FROM 테이블이름
WHERE 조건;

1.5 뷰 삭제 쿼리

DROP VIEW 뷰이름;

2. 저장 프로시저(Stored Procedure)

현업에서 많이 사용하니 중요!

2.1 저장 프로시저란?

SQL이 실행될 때 진행하는 일련의 과정을 미리 실행해서 저장해두고 나중에는 저장된 걸 사용하는 기능

2.2 저장 프로시저 정의 쿼리

DELIMITER $$  							   # 문장 끝 구분자 $$로 변경
CREATE PROCEDURE SP이름 (IN 또는 OUT 속성)   # 저장 프로시저 정의
BEGIN  									   # 프로시저 정의 블록 시작
 	저장할 SQL
END $$  								   # 프로시저 정의 블록 종료
DELIMITER ;  							   # 구분자 설정 복원

2.3 저장 프로시저 삭제 쿼리

drop procedure SP_SELECT_MEMBER_WITH_WHERE;

2.4 저장 프로시저 실습

-- member 테이블 생성 
create table member (
	idx INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(39),
    nickname VARCHAR(20),
    createdAT DATETIME
    );

-- 조건 기반 회원 조회 프로시저 생성
DELIMITER $$   
CREATE PROCEDURE SP_SELECT_MEMBER_WITH_WHERE (IN memberIdx INT) 
BEGIN 
	SELECT * FROM member WHERE member.idx = memberIdx; # 입력 인자 memberIdx를 받아서, 해당 idx값을 가진 회원 정보만 조회
END $$
DELIMITER ;

-- 조건 기반 프로시저 호출
call SP_SELECT_MEMBER_WITH_WHERE(1); # idx = 1인 회원만 조회

3. 인덱스(Index)

성능에 영향이 있으니 중요!

3.1 인덱스란?

테이블에서 원하는 데이터를 쉽고 빠르게 검색할수있도록 만들어진 데이터 구조
자주 사용되는 속성으로 만들어진 원본 테이블의 사본과도 같은 것

3.2 인덱스 생성 쿼리

CREATE INDEX 인덱스이름
ON 테이블이름 (속성, 속성, ...)

3.3 인덱스 조회 쿼리

SHOW INDEX FROM 테이블이름

3.4 인덱스 삭제 쿼리

ALTER TABLE 테이블이름 DROP INDEX 인덱스이름;

배열, 스택, 큐, 데크, 연결리스트

sql 성능 측정(중요)

SQL
Structured Query Language

컴파일 언어 vs 인터프리터 언어
컴파일 언어: 인터프리터 언어보다 빠르다.
ex) C언어
인터프리터 언어: 컴파일 언어보다 느리다.
ex) 파이썬

1개의 댓글

comment-user-thumbnail
2025년 6월 16일

너무 짧아요

답글 달기