본문 바로가기
  • Coding & Book
학습단/SQL 학습단

혼공스 4일차(데이터 베이스 개체)

by 루이3 2023. 7. 6.

인덱스

  • 데이터베이스 테이블에서 데이터를 빠르게 검색하고 조회하기 위해 사용합니다.
  • 책에서 뒷부분에 있는 찾아보기 와 비슷합니다.
  • 실무에서 수천억건의 데이터를 처리할때 인덱스를 잘 활용하지 못하면 느려진다고 합니다.

 

& 3일차 마지막 손님 명단에서 인덱스를 생성해보겠습니다.

 

1. 생성 방법은 아래 코드를 실행해주시면 됩니다.

ON member(member_name)의 의미는 member 테이블에서 member_name 열에 인덱스를 생성해라 는 것 입니다.

CREATE INDEX idx_member_name ON member(member_name);

 

 

2. 생성 후 토니를 찾아 보겠습니다.

SELECT * FROM member WHERE member_name="토니";

 

  • 토니를 찾았는데 이게 인덱스를 통해 검색이 되었는지 알기 어렵습니다.
  • 이를 위해 사진 하단에 있는 Execution Plan 탭을 누르시면 가운데에 Non-Unique Key Lookup이 뜨는데 이게
    인덱스를 통해 결과를 찾았다 라고 생각하시면 될거 같습니다.

 

 

 

 

tip) 여기에 인덱스를 제거 하는 방법은 안나와 있어 다른 글을 찾아봤습니다. (아래 코드가 제거 하는 방법입니다.)

DROP INDEX idx_member_name ON member;

 

제거하시고 다시 토니를 찾을경우 Non-Unique Key Lookup이  아닌 Full Table Scan(전체 테이블 검색) 이라고 나옵니다.

 

 

  • 실제 데이터를 저장하는것이 아니라
    테이블에 대한 쿼리 결과를 나타내는 이름이 있는 가상 테이블 이라고 할수 있습니다.
  • 윈도우의 바로가기 아이콘과 비슷합니다.
  • 사용이유는 보안에 도움이 되고 SQL 문을 간략하게 만들 수 있어서 사용합니다.

 

사용 방법은 아래 코드를 이용해 뷰를 만들어주시면 됩니다.

CREATE VIEW member_view 
AS
	SELECT * FROM member

 

뷰를 만드시면 member 말고 member_view를 사용해 접근이 가능하다는것을 알수 있습니다.

SELECT * FROM member_view;

 

 

스토어드 프로시저

  • 일련의 작업들을 하나로 묶어서 사용하는 것입니다.
  • 이를 통해  c , 자바 같은 프로그래밍 언어에서 사용되는 반복문 조건문등을 사용할수 있다고 합니다.

 

예시로 두개의 SQL을 실행할때 member 탭과 product 탭동시입력해야 합니다.

이를 하나의 스토어드 프로시저로 만들수 있습니다.

 

 

하나로 만들기 위해서 아래코드를 실행 해주시면 됩니다.

DELIMITER // ~DELIMITER; 문은 스토어드 프로시저를 묶어준다라고 생각하시면 됩니다.

DELIMITER //
CREATE PROCEDURE myProc()
BEGIN
		SELECT * FROM member WHERE member_name="토니";
        SELECT * FROM product WHERE product_name ="삼각김밥";
END //

 

 

결과(CALL문을 통해  실행하시면 됩니다.)