검색엔진

금요일, 2월 05, 2021

[유튜브 방송] (즐겁게 배우는 SQL #45) 색인 - 색인

[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 45편을 공개해드리겠다. 45편은 색인을 거는 방법을 소개한다.

2021년 2월 5일자 [즐겁게 배우는 SQL #45] 색인 - 색인 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 색인 개념과 색인 생성 기본 형식
  • 04:13 단일 컬럼 색인 생성
  • 10:04 다중 컬럼 색인 생성
  • 14:05 색인 확인
  • 15:59 색인 제거

원본 학습자료는 SQLite Index를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 색인 개념과 색인 생성 기본 형식
    CREATE [UNIQUE] INDEX index_name 
    ON table_name(column_list);
    
  • 단계 2: 단일 컬럼 색인 생성
    1. SQL> CREATE TABLE contacts ( first_name text NOT NULL, last_name text NOT NULL, email text NOT NULL );
    2. SQL> CREATE UNIQUE INDEX idx_contacts_email ON contacts (email);
    3. SQL> INSERT INTO contacts (first_name, last_name, email) VALUES('John','Doe','john.doe@sqlitetutorial.net');
    4. SQL> INSERT INTO contacts (first_name, last_name, email) VALUES('Johny','Doe','john.doe@sqlitetutorial.net');
    5. SQL> INSERT INTO contacts (first_name, last_name, email) VALUES('David','Brown','david.brown@sqlitetutorial.net'), ('Lisa','Smith','lisa.smith@sqlitetutorial.net');
    6. SQL> SELECT first_name, last_name, email FROM contacts WHERE email = 'lisa.smith@sqlitetutorial.net';
    7. SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts WHERE email = 'lisa.smith@sqlitetutorial.net';
  • 단계 3: 다중 컬럼 색인 생성
    1. SQL> CREATE INDEX idx_contacts_name ON contacts (first_name, last_name);
    2. SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts WHERE first_name = 'John';
    3. SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts WHERE first_name = 'John' AND last_name = 'Doe';
    4. SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts WHERE last_name = 'Doe';
    5. SQL> EXPLAIN QUERY PLAN SELECT first_name, last_name, email FROM contacts last_name = 'Doe' OR first_name = 'John';
    6. SQL>
  • 단계 4: 색인 확인
    1. SQL> PRAGMA index_list('contacts');
    2. SQL> PRAGMA index_info('idx_contacts_name');
    3. SQL> SELECT type, name, tbl_name, sql FROM sqlite_master WHERE type= 'index';
  • 단계 5: 색인 제거
    1. SQL> DROP INDEX idx_contacts_name;
    2. SQL> PRAGMA index_list('contacts');
    3. SQL> PRAGMA index_info('idx_contacts_name');
    4. SQL> DROP INDEX idx_contacts_email;
    5. SQL> PRAGMA index_list('contacts');
    6. SQL> PRAGMA index_info('idx_contacts_email');
EOB

댓글 없음:

댓글 쓰기