티스토리 뷰
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
반응형
'프로그래머스 백엔드 1기 > Database' 카테고리의 다른 글
데이터베이스 (14) - View (0) | 2021.08.14 |
---|---|
데이터베이스 (13) - 트랜잭션 (0) | 2021.08.13 |
데이터베이스 (12) - JOIN (0) | 2021.08.13 |
데이터베이스 (11) - INSERT문, UPDATE문, DELETE문 (0) | 2021.08.12 |
데이터베이스 (10) - SELECT문 (0) | 2021.08.12 |
댓글