SlideShare a Scribd company logo
데이터베이스베이직인덱스 
NHN NEXT 정호영 
나눔고딕및나눔고딕코딩글꼴을설치해주세요.
데이터베이스의인덱스 
테이블에대한동작의속도를높여주는자료구조
데이터베이스의인덱스 
테이블에대한동작의속도를높여주는자료구조 
사실은 
Insert,Update,Delete속도를희생하여 
읽기속도를높임
인덱스실험1 
1.indexdb.sql실행 
2.200만건의레코드삽입 
LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE user 
FIELDS idENTIFIEDBY ',' 
IGNORE 1 LINES;
쿼리수행 
1.indexdb.sql실행 
2.200만건의레코드삽입 
SELECT COUNT(*) FROM user WHERE id LIKE 'M%'; 
SELECT COUNT(*) FROM user WHERE id LIKE '%1'; 
SELECT COUNT(*) FROM user WHERE money = 1000; 
SELECT COUNT(*) FROM user WHERE last_visit> '2014-05-17';
쿼리마다성능이다른이유는? 
특정칼럼에대해인덱스가자동으로만들어짐 
PRIMARYKEY인덱스자동생성 
FOREIGNKEY에도인덱스자동생성
인덱스확인해보기 
SHOW INDEX FROM user;
직접인덱스만들어보기 
CREATE INDEX idX_user_1 ON user(last_visit);
다시쿼리실행 
SELECT COUNT(*) FROM user WHERE id LIKE 'M%'; 
SELECT COUNT(*) FROM user WHERE id LIKE '%1'; 
SELECT COUNT(*) FROM user WHERE money = 1000; 
SELECT COUNT(*) FROM user WHERE last_visit> '2014-05-17'; 
SELECT COUNT(*) FROM user WHERE last_visit<> '2014-04- 15';
데이터삭제후다시삽입 
데이터삭제후다시삽입 
삭제에오랜시간이걸립니다. 
데이터삽입시간도더길어졌습니다. 
왜그런차이가생겼을까요?
데이터삭제후다시삽입 
Bulkinsert를할때는 
(1)인덱스제거–데이터삽입-인덱스재생성 
(2)인덱스일시중지–데이터삽입-인덱스활성화 
를사용할수있는데,(1)번이더빠릅니다.
인덱스일시중지 
ALTER TABLE user DISABLE KEYS; 
LOAD DATA … 
ALTER TABLE user ENABLE KEYS;
복합인덱스만들기 
여러컬럼을묶어서인덱스를만들수도있습니다. 
DROP INDEX idX_user_1 ON user; 
CREATE INDEX idX_user_2 ON user(last_visit, money);
복합인덱스성능실험 
SELECT COUNT(*) FROM user WHERE last_visit> '2014-05-15'; 
SELECT COUNT(*) FROM user WHERE last_visit> '2014-05-15' AND money > '5000'; 
SELECT COUNT(*) FROM user WHERE money = '5000'; 
SELECT COUNT(NAME) FROM user WHERE last_visit<> '2014-05- 15' AND money ='5000'; 
SELECT COUNT(NAME) FROM user WHERE last_visit='2014-05- 15' AND money ='5000';
복합인덱스실험 
복합인덱스는순서가중요 
첫번째조건을활용할수없다면복합인덱스는 
사용이불가능합니다.
인덱스의종류 
물리적저장구조에따라 
ClusterdIndex 
SecondaryIndex(Non-clusterdIndex) 
논리적저장구조에따라 
UniqueIndex 
Non-uniqueIndex
ClusteredInex 
클러스터드인덱스는 
사실인덱스가아니라저장구조그자체 
B+트리를사용 
리프노드:실제레코드(데이터페이지) 
키:PRIMARYKEY값
MySQL 인덱스의 기초
SecondaryIndex 
직접인덱스를만들면세컨더리인덱스를생성 
세컨더리인덱스의구조는 
B+트리를사용 
키:인덱스를생성한컬럼 
리프노드:해당레코드의PRIMARYKEY값을저장 
실제데이터를찾으려면인덱스를두번찾아야함
FullTextSearch 
성능이좋지않은자연어검색(FullTextSearch)을지원 
없는것보다나은정도? 
보통게시판등에자주사용됩니다. 
InnoDB도지원됩니다! 
FullText인덱스를먼저만들어야사용가능합니다.
FullTextIndex만들기 
CREATE FULLTEXT INDEX idX_FT1 ON TTT(TITLE, BODY);
FullTextIndex사용하기 
SELECT 
BODY, MATCH(BODY) AGAINST(‘마르고닳도록’) FROM TTT 
SELECT * 
FROM TTT WHERE MATCH(BODY) AGAINST (‘백두산이닳도록’);
한국어검색 
FULLTEXT는mysql이적합하지않은것같습니다. 
전문검색엔진을사용하는것이좋습니다. 
-스핑크스 
-루씬
THANK YOU!!!

More Related Content

PDF
MySQL JOIN
Hoyoung Jung
 
PDF
암달의 법칙과 쿼리튜닝 기초
Hoyoung Jung
 
PDF
MySQL delete.update
Hoyoung Jung
 
PPTX
효율적인Sql작성방법 2주차
희동 강
 
PPTX
개발자들이 흔히 실수하는 SQL 7가지
JungGeun Lee
 
PPTX
효율적인Sql작성방법 3주차
희동 강
 
PPTX
효율적인 SQL 작성방법 1주차
희동 강
 
PPTX
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
MySQL JOIN
Hoyoung Jung
 
암달의 법칙과 쿼리튜닝 기초
Hoyoung Jung
 
MySQL delete.update
Hoyoung Jung
 
효율적인Sql작성방법 2주차
희동 강
 
개발자들이 흔히 실수하는 SQL 7가지
JungGeun Lee
 
효율적인Sql작성방법 3주차
희동 강
 
효율적인 SQL 작성방법 1주차
희동 강
 
(오라클힌트/SQL튜닝 강좌)쿼리튜닝을 위한 오라클의 10053 이벤트
탑크리에듀(구로디지털단지역3번출구 2분거리)
 

What's hot (20)

PDF
Laravel 로 배우는 서버사이드 #4
성일 한
 
PPTX
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPTX
SQL쿼리튜닝팁 - 허성
ETRIBE_STG
 
PPTX
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
PgDay.Seoul
 
PPTX
효율적인Sql작성방법 4주차
희동 강
 
PDF
[Pgday.Seoul 2020] SQL Tuning
PgDay.Seoul
 
PPTX
(추천오라클힌트교육)해시조인, Hash join, use_hash, ordered
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
PostgreSQL로 배우는 SQL 기초
Jiho Lee
 
PDF
JPA Study - 1주차(SLIPP)
Jeong-gyu Kim
 
PDF
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
데이터베이스패턴
Suan Lee
 
PDF
파이썬 데이터베이스 연결 2탄
SeongHyun Ahn
 
PDF
파이썬 데이터베이스 연결 1탄
SeongHyun Ahn
 
PDF
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
PgDay.Seoul
 
PDF
[PHPFest 2013] Real mysql
phpkorea
 
PPTX
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Laravel 로 배우는 서버사이드 #4
성일 한
 
(SQL초보자를 위한, 쿼리최적화 for SQL튜닝)SQL쿼리작성Tip,최적화팁,최적화된SQL작성방법교육
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
SQL쿼리튜닝팁 - 허성
ETRIBE_STG
 
(쿼리 변환, Query Transformation,서브쿼리푸시,SubQuery Pushing)SQL튜닝을 위해 서브쿼리의 드라이빙을 제어...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[Pgday.Seoul 2021] 1. 예제로 살펴보는 포스트그레스큐엘의 독특한 SQL
PgDay.Seoul
 
효율적인Sql작성방법 4주차
희동 강
 
[Pgday.Seoul 2020] SQL Tuning
PgDay.Seoul
 
(추천오라클힌트교육)해시조인, Hash join, use_hash, ordered
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PostgreSQL로 배우는 SQL 기초
Jiho Lee
 
JPA Study - 1주차(SLIPP)
Jeong-gyu Kim
 
#1.SQL초보에서 Schema Objects까지(SQL학원/오라클학원/IT실무교육학원/재직자/실업자교육학원추천)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
데이터베이스패턴
Suan Lee
 
파이썬 데이터베이스 연결 2탄
SeongHyun Ahn
 
파이썬 데이터베이스 연결 1탄
SeongHyun Ahn
 
[Pgday.Seoul 2018] PostgreSQL 11 새 기능 소개
PgDay.Seoul
 
[PHPFest 2013] Real mysql
phpkorea
 
(오라클힌트,SQL튜닝강좌#25)오라클WITH구문,서브쿼리 팩토링
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Ad

Similar to MySQL 인덱스의 기초 (20)

DOCX
MySQL_SQL_Tunning_v0.1.3.docx
NeoClova
 
PDF
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
Seok-joon Yun
 
PDF
DB Basic _ 성능개선
Youngnam Lee
 
PDF
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
MongoDB
 
PDF
DB Index.pdf
Seokju Hong
 
PDF
Database 튜닝 교육 110124
한 경만
 
PPTX
대규모 서비스를 지탱하는 기술 Ch 4
ukjinkwoun
 
PDF
[제3회 스포카콘] SQL 쿼리 최적화 맛보기
Jonghun Park
 
PPTX
실무로 배우는 시스템 성능 최적화 Ch6
HyeonSeok Choi
 
PDF
SQL Server Access Patterns
Sung wook Kang
 
PDF
#25.SQL초보에서 Schema Objects까지_구로IT학원/국비지원IT학원추천/구로디지털단지IT학원/재직자환급교육추천
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PDF
My sql특징 정리
parktaesoon
 
PPTX
181215 MS SQL로 알아보는 데이터베이스
KWANGIL KIM
 
PDF
Fundamentals of Oracle SQL
JAEGEUN YU
 
PPTX
개발자도 알아야 하는 DBMS튜닝
정해 이
 
PDF
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
엑셈
 
PPT
Mongodb index
Kyungsuk Song
 
PPTX
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
Minchul Jung
 
MySQL_SQL_Tunning_v0.1.3.docx
NeoClova
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
Seok-joon Yun
 
DB Basic _ 성능개선
Youngnam Lee
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
MongoDB
 
DB Index.pdf
Seokju Hong
 
Database 튜닝 교육 110124
한 경만
 
대규모 서비스를 지탱하는 기술 Ch 4
ukjinkwoun
 
[제3회 스포카콘] SQL 쿼리 최적화 맛보기
Jonghun Park
 
실무로 배우는 시스템 성능 최적화 Ch6
HyeonSeok Choi
 
SQL Server Access Patterns
Sung wook Kang
 
#25.SQL초보에서 Schema Objects까지_구로IT학원/국비지원IT학원추천/구로디지털단지IT학원/재직자환급교육추천
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
My sql특징 정리
parktaesoon
 
181215 MS SQL로 알아보는 데이터베이스
KWANGIL KIM
 
Fundamentals of Oracle SQL
JAEGEUN YU
 
개발자도 알아야 하는 DBMS튜닝
정해 이
 
TABLE ACCESS 패턴을 이용한 SQL 튜닝_Wh oracle
엑셈
 
Mongodb index
Kyungsuk Song
 
7부. 애플리케이션 입장에서의 성능 튜닝 (1~8장)
Minchul Jung
 
Ad

More from Hoyoung Jung (20)

PDF
철권 1단에서 벗어나기
Hoyoung Jung
 
PPTX
코딩 공부 시작하기
Hoyoung Jung
 
PPTX
내 질문에는 왜 답변이 달리지 않을까
Hoyoung Jung
 
PPTX
entry를 이용한 코딩 교육1
Hoyoung Jung
 
PDF
Github Markdown
Hoyoung Jung
 
PDF
stored procedure2 + jdbc
Hoyoung Jung
 
PDF
mysql stored procedure
Hoyoung Jung
 
PDF
mysql 서브쿼리
Hoyoung Jung
 
PDF
GROUP BY, CASE WHEN
Hoyoung Jung
 
PDF
트랜잭션
Hoyoung Jung
 
PDF
데이터베이스 정규화
Hoyoung Jung
 
PDF
tomcat jdbc mysql 프로그래밍
Hoyoung Jung
 
PDF
데이터베이스 모델링
Hoyoung Jung
 
PDF
MySQL Select (1)
Hoyoung Jung
 
PDF
4. 함수포인터
Hoyoung Jung
 
PDF
2. MySQL DataTye Basic
Hoyoung Jung
 
PDF
MySQL Create Table
Hoyoung Jung
 
PDF
Mymysql basic sql
Hoyoung Jung
 
PDF
데이터베이스 베이직 소개
Hoyoung Jung
 
PDF
Crontab 간단 사용법
Hoyoung Jung
 
철권 1단에서 벗어나기
Hoyoung Jung
 
코딩 공부 시작하기
Hoyoung Jung
 
내 질문에는 왜 답변이 달리지 않을까
Hoyoung Jung
 
entry를 이용한 코딩 교육1
Hoyoung Jung
 
Github Markdown
Hoyoung Jung
 
stored procedure2 + jdbc
Hoyoung Jung
 
mysql stored procedure
Hoyoung Jung
 
mysql 서브쿼리
Hoyoung Jung
 
GROUP BY, CASE WHEN
Hoyoung Jung
 
트랜잭션
Hoyoung Jung
 
데이터베이스 정규화
Hoyoung Jung
 
tomcat jdbc mysql 프로그래밍
Hoyoung Jung
 
데이터베이스 모델링
Hoyoung Jung
 
MySQL Select (1)
Hoyoung Jung
 
4. 함수포인터
Hoyoung Jung
 
2. MySQL DataTye Basic
Hoyoung Jung
 
MySQL Create Table
Hoyoung Jung
 
Mymysql basic sql
Hoyoung Jung
 
데이터베이스 베이직 소개
Hoyoung Jung
 
Crontab 간단 사용법
Hoyoung Jung
 

MySQL 인덱스의 기초