본문 바로가기
개발/mysql

mysql index란 무엇인가? DB속도 높이는 간단한 방법들 소개

by 향유 2022. 5. 10.


index하면 한 단어만 기억하면 된다.  'Full Scan 방지'

DB에 데이터가 많을 시 모든 데이터를 조회하게 되면 속도가 느린 현상이 발생할 수 있다. 
이에 대한 해결책중 하나가 index 기능이다.



방법은 간단하다.

where 문에 나오는 필드를 index 대상으로 선정하면 된다.
예를 들자면 아래와 같은 명령어에서 id를 index 대상으로 선정하면 된다.

select * from member where id=''

 


필드 수가 많고 단일 인덱스를 거는 경우

=> 중복 수가 많은 필드로 인덱스를 건다 (ex member_code)

 

 

다중 인덱스를 거는 경우

=> 높은 중복 필드-> 중복 수치가 낮은 필드 순으로 중복양이 많은 필드들을 건다.





그 밖에 속도를 내기 위한 방법은 여러가지가 있겠으나 생각나는 몇 가지 방법을 공유한다.


1. DB 쿼리문을 최소화 하고 웹상에서 (java나 php 등) 처리한다.
 => 데이터를 한번에 가져와서 가공하는 등 조회를 최소화한다.


2. 데이터 필드 크기를 최적화 한다.
 => 이름 필드에 varchar 200를 줄 필요는 없다. varchar 10으로 줄이고 입력값 길이 제한을 주면 20배 절약가능하다.


3. update 보다 delete  insert가 빠르다.
 => 경우에 따라 update문을 최소화하고 임시 데이터를 가공하여 insert하고 삭제하는 것도 방법중 하나다. 단 code 값은 다른 join 테이블 들과 공유가 안되니 별도의 처리를 하든 감안하여 사용하자.


4.  select 시 * 말고 사용 필드를 특정하자
select * from member  => select name,id,tel from member
 => 모든 데이터를 가져오는 것 보다 빠르다.


5. 테이블 분할
 => 모든 데이터를 하나의 테이블에 우겨 넣을 필요는 없다. 사용성은 편리하지만 성능이 크게 필요로 하는 프로젝트의 경우 테이블을 세분화하여서 데이터 삽입 수정 삭제 등의 작업 부피를 줄이는 것도 방법이다. 반면 작은 프로젝트는 그냥 테이블 하나로 끝내는 것도 유지보수에 편리하니 선택에 달려있다.


6. like문보다 match against 문을 이용한다.
 => 속도가 더 잘 나온다.
  

댓글