728x90
반응형
Database - MySQL 기초3 - index (https://opentutorials.org/course/195/1538)
심화 개념‼️‼️‼️‼️
index (인덱스)
- Database에 있는 데이터가 백만개 천만개 있는 경우 필요한 데이터를 찾아는데 시스템 상의 부하, 많은 시간이 소요될 수 있다.
- Database 기반의 웹서비스를 만들었을 때 게시판을 조회할 때 index 문제로 오랜 시간이 걸린다면?? 아무도 사용하지 않을 것이다.
물론 가볍게 사용하는 정도라면 index를 사용해서 만들 지 않아도 최근 컴퓨터의 성능은 좋기 때문에 빠른 처리가 된다. 하지만 그 반대일 때 index를 사용해서 빠르게 찾을 수 있도록 만들 수 있다.
인덱스의 종류
primary
: 중복되지않는 유일한 키normal
: 중복을 허용하는 인덱스unique
: 중복을 허용하지 않는 유일한 키foreign
: 다른 테이블과의 관계성을 부여하는 키full text
: 자연어 검색, myisam에서만 지원
key를 지정하게 되면 그 key들을 각각 인덱스라고 할 수 있다.
primary key
- https://docs.microsoft.com/ko-kr/sql/relational-databases/tables/primary-and-foreign-key-constraints?view=sql-server-2017
- 테이블 전체를 통틀어서 중복되지않는 값
where
문을 이용해서 데이터를 조회할 때 가장 고속으로 데이터를 가져올 수 있다.- 보통 int형의 seq를
auto_increment
속성을 부여하여 primary key로 지정한다. - 테이블마다 primary key는 딱 한개만 가질 수 있다.
unique key
- https://docs.microsoft.com/ko-kr/sql/relational-databases/tables/unique-constraints-and-check-constraints?view=sql-server-2017
unique key
도 테이블에서 중복되지 않는 값을 뜻하는데primary key
와 다른 점을 갯수 차이가 있다. pk는 테이블마다 딱 하나만 가질 수 있는 반면, unique key는 한 테이블에 여러개를 가질 수 있다.- 고속으로 데이터를 가져올 수 있다.
- 학번처럼 중복값을 허용하지 않을 때 사용하면 좋다. 만일 이미 등록되어있는 unique key와 같은 값을 넣으려고 하면 아래와 같은 에러가 발생한다.
ERROR 1062 (23000): Duplicate entry '0123' for key 'idx_number'
normal key
- 중복을 허용한다.
- primary, unique보다 속도가 느리다.
- 여러 개의 키를 지정할 수 있다.
foreign key
- 다른 테이블과의 관계성을 부여하는 키
- 최근에는 많이 사용하지않고 만일 테이블끼리의 연관된 데이터의 조작, 삭제가 이루어지게 되면 코드상으로 연결된 데이터가 따라서 조작, 삭제될 수 있도록 하며 이 과정에서 문제가 발생했을 때
rollback
처리를 한다.
full text
- mysql의 기본설정(ft_min_word_len)이 4로 되어 있기 때문에 최소 4글자 이상을 입력하거나 이 값을 조정해야 한다.
- 한계점이 많이 존재함
- mysql은 전문 검색 엔진이 아니기 때문에 한글 검색이 잘 안된다. 전문검색엔진으로 lucene, sphinx 참고
- 스토리지 엔진 중 myisam에서만 사용가능
인덱스의 정의 방법 ‼️‼️‼️‼️
- 자주 조회되는 칼럼에 적용
- 조회 시 오랜시간을 소모하는 컬럼에 적용
- 데이터가 긴 경우 인덱스를 사용하지 않는다
반응형
'Programming > DB' 카테고리의 다른 글
[DB/MySQL] Database - MySQL 기초2 (0) | 2018.08.10 |
---|---|
[DB/MySQL] Database - MySQL 기초 (0) | 2018.08.09 |
[DB/Docker/MSSQL] Docker + MSSQL 개발하기 (0) | 2018.08.09 |
[DB/MySQL] mysql charset 변경하기 (alter table character set) (0) | 2016.10.02 |
[DB tools/Toad] Toad database connection not available 오류 해결법 (서버 외부포트 여는 방법) (0) | 2016.09.26 |