sql에서 index
를 걸면 select
가 빨라진 것을 확인할 수 있었습니다.
그럼 아래와 같은 쿼리가 있을 경우 무엇이 더 좋은지 보면
현재 loginId에 index가 걸려있는 상황입니다.
select * from member where loginId like 'user%';
select * from member where loginId like '%user';
시간을 보면 위 쿼리가 훨씬 빠른 것을 볼 수 있습니다.
그 이유는 like의 경우 앞에 %가 붙어 있으면 어느정도 인덱스를 활용해서 일치하는 부분까지 걸러내서 가져올 수 있습니다(range
방식을 이용). 그러나 아래 %like의 경우 시작 string을 알 수 없어 어쩔수 없이 풀 스캔으로 직접 비교하며 값을 가져와야 하기에 실행속도에 차이가 생기게 된것입니다.