본문 바로가기
DataBase

쿼리 속도 향상을 위한 방법들

by 완기 2021. 2. 14.
728x90
반응형

공부용으로 생각날 때마다, 배울 때마다 추가하자.

 

1. select를 할 때는 필요한 데이터만 뽑는다.

    예를 들면 select * from student; 보다는

    select name,age,class from student;를 하는 방법이다.

    이렇게 되면 IO가 줄어들면서 DB의 쿼리에 성능을 효과적으로 사용할 수 있다.

    애초에 테이블 자체가 row가 많이 없다면 상관없지만 양이 많아지면 5초가 지나도 결과가 안 나오는 경우가 많다.

 

2.like ='%something%'을 사용할 때는 %를 가급적 뒤에만 붙이자.

    %를 앞에 붙이게 되면 ~로 시작하는 문자열을 다 검색해야 해서 연산의 시간이 증가하지만 

    뒤에만 붙이게 되면 특정 문자열 이후의 값들만 검색하면 되므로 불가피할 경우가 아니라면 문자열 검색의 % 는 뒤에만 붙이자

    예:) select * from student where name like '김%';

 

3.group by를 써야한다면 group by 이전에 조건절로 필요한 데이터를 미리 정의해두자.

  group by는 조건에 맞는 데이터를 뽑아낸 후, 다시 재 정렬하는 방법이기 때문에, 정렬 이전에 데이터 양이 많아지면 그만큼 속도가 느려진    다. 그렇기때문에 group by 이전에 조건절로 필요한 데이터만 가져올 수 있도록 조건을 걸어주자.

 

4. 인덱스를 활용하자.

    index는 마치 책을 피면 몇 페이지에 무슨 내용이 있다.라고 말하는 것처럼, 어디에 뭐 있다 라고 미리 파일로 저장해두는 방법이다.

    인덱스를 사용하면 테이블을 full scan을 하지 않고, 색인화 되어있는 파일을 스캔하여 검색 속도를 향상한다.

    인덱스는 검색 속도를 향상하거나, 조건절에 해당하지 않는 열을 미리 제외하기 위해 사용을 많이 한다.

    인덱스를 걸 때, 조건은 해당 칼럼이 유니크하거나 식별 가능한 단일의 값을 사용하면 좋고, pk를 기준으로 검색을 하면 검색 속도도 향상      되는 건 이에 있다.

728x90
728x90

댓글