티스토리 뷰

Explan SQL

  • SELECT / UPDATE / INSERT / DELETE 등의 쿼리가 어떻게 수행되는지 내부를 보여주는 SQL 명령이다.
  • MySQL이 해당 쿼리를 어떻게 실행할 지 실행 계획을 보여준다. 이를 바탕으로 느리게 동작하는 쿼리의 최적화가 가능해진다.
  • 느린 쿼리의 경우 문제가 되는 테이블에 인덱스를 만드는 것이 일반적이다.
  • EXPLAIN
    SELECT 문;

Index

  • 인덱스는 테이블에서 특정 찾기 작업을 빠르게 수행하기 위해 별도로 만드는 데이터 구조를 말한다.
    • 컬럼별로 만들어진다.
    • Primary Key나 Foreign Key로 지정된 컬럼은 기본적으로 Index를 갖게 된다.
    • 특정 컬럼을 바탕으로 검색을 자주 한다면, 인덱스 생성이 큰 도움이 될 수 있다.
  • 인덱스는 B+ 트리구조로 만들어진다.
  • 컬럼에 인덱스를 붙일 때마다 B+트리 자료구조로 인덱스를 구성하고 메모리로 로딩한다.
    • 테이블에 너무 많은 인덱스를 추가하면 인덱스의 로딩으로 인한 오버헤드로 인해 시스템이 전체적으로 느려질 수 있다.
  • 인덱스는 SELECT / DELETE / JOIN 명령처리를 빠르게 하지만, INSERT / UPDATE 명령처리는 느리게 한다.
  • Index는 CREATE TABLE 문 실행시 컬럼의 속성으로 지정이 가능하다.
  • 인덱스 생성 방법
    • 테이블 생성시 인덱스를 생성한다.
      CREATE TABLE 테이블이름 (
          id INT NOT NULL AUTO_INCREMENT,
          index_col VARCHAR(20),
          PRIMARY KEY(id),
          INDEX 인덱스이름 (index_col)
      );
    • 테이블 생성 후, 나중에 ALTER TABLE 또는 CREATE INDEX 함수를 이용하여 생성한다.
      ALTER TABLE 테이블이름 ADD INDEX (컬럼명); // 인덱스 생성
      ALTER TABLE 테이블이름 ADD UNIQUE (컬럼명); // 유니크 인덱스 생성
      ALTER TABLE 테이블이름 ADD FULLTEXT (컬럼명); // 텍스트 검색에 특화된 인덱스 생성
      ALTER TABLE 테이블이름 DROP INDEX (컬럼명); // 인덱스 삭제
      
      CREATE INDEX 인덱스이름 ON 테이블이름 (컬럼명); // 인덱스 생성
      CREATE UNIQUE INDEX 인덱스이름 ON 테이블이름 (컬럼명); // 인덱스 생성
728x90
반응형
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함