일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 최강의 인생
- node.js
- for문
- select
- array.push()
- 알고리즘
- 역행자
- 정규표현식
- array.slice()
- 재귀함수
- Hackerrank
- 배열
- SQL
- 자바스크립트
- Programmers
- array
- 블록체인
- MySQL
- 코딩테스트
- Developer_JoyKim
- 코플릿
- 개발자_조이킴
- JavaScript
- 개발자의 책장
- Algorithms
- 코딩공부
- join
- Where
- 코드스테이츠
- 프로그래머스
Archives
- Today
- Total
CodingSpace
[얄코/갖고노는 MySQL 데이터베이스] Chapter 4. MySQL 더 깊이 알아가기 - #3. 인덱스 - 검색을 빠르게! 본문
Online Class/갖고노는 MySQL 데이터베이스
[얄코/갖고노는 MySQL 데이터베이스] Chapter 4. MySQL 더 깊이 알아가기 - #3. 인덱스 - 검색을 빠르게!
개발자_조이킴 2022. 9. 9. 00:11What:
- 인덱스
- 특정 컬럼(들)에 대한 목차 생성 - 검색 가속화
- 테이블 내용변경(추가, 수정, 삭제)시 시간 더 소모
- 기본키(PRIMARY KEY)는 기본적으로 인덱스가 걸려있음 → 따라서 PRIMARY KEY를 기준으로 데이터 검색은 빠름!
-- 인덱스 생성
ALTER TABLE (테이블명)
ADD INDEX (인덱스명) (인덱스를 적용시킬 컬럼명)
ex)
ALTER TABLE `mydatabase`.`businesses`
ADD INDEX index_biz_name (business_name);
-- 다중 컬럼 인덱스
ALTER TABLE menus
ADD INDEX index_name_cal (menu_name, kilocalories);
-- 인덱스 조회
SHOW INDEX FROM businesses;
-- 인덱스 삭제
ALTER TABLE businesses
DROP INDEX index_biz_name;
- 인덱스를 사용하기 적합한 곳
- 데이터 변경이 잦지 않은 테이블
- WHERE, ORDER BY에 자주 사용되는 컬럼
- JOIN에 사용되는 컬럼
- Cardinality가 높은 컬럼 = 중복도가 낮은 컬럼 (B-Tree 경우)
- 성별: 부적합
- 이름: 적합
- 인덱스의 종류
- B-Tree 인덱스
- 기본(default) 인덱스
- Cardinality가 높은 컬럼에 적합
- 편의성 - 복잡한 쿼리 사전 구현
- Full-Text 인덱스
- 다수의 단어 등을 포함하는 컬럼에서 단어 및 구문을 검색하기 위함
- 데이터를 일정 단위로 분할하여 인덱싱
- InnoDB, MyISM에서만 사용 가능
- CHAR, VARCHAR, TEXT 컬럼에만 적용 가능
- Full-Text Index 문서 링크
- Hash 인덱스
- 일치 여부만 확인 (= 가능, >, >=, <, <=, LIKE 등 불가)
- 인덱스 크기가 작고 검색이 매우 빠름
- MEMORY, NDB 엔진에서만 사용 가능
- 비트맵 인덱스
- Cardinality가 낮은 컬럼에 적합
- MySQL에는 없음
References.
For Developer.
- 잘못되거나 부족한 부분이 있다면 언제든지 댓글 부탁드립니다 :)
'Online Class > 갖고노는 MySQL 데이터베이스' 카테고리의 다른 글
Comments