데이터베이스 조회 쿼리 속도 비교 2가지, full search 이슈
DB 쿼리 찾다가 우연히 흥미로운 글을 읽었습니다. 뽐뿌에 올라왔던 글인데, 정리하면 이렇습니다.
◆ 전제 사항
- 접속 인원 = 1,000명 유지 (매번, 항상, 계속)
예를 들어, 특정 데이터베이스 row 건수가 1만으로 가정했을 때, 두 쿼리 또는 로직 중 어느 것이 효율적일까? 빠를까?
1. 데이터베이스 조회
부자 [ㅂㅜㅈㅏ] 총 4회!
1 | select txt from test where key like #txt# || '%' order by num desc | cs |
2. 2시간 단위로 데이터베이스 1만건 String[][] 에 담아놓고 java 로직으로 처리
부자 [ㅂㅜㅈㅏ] 총 4회!
둘 중 DB 조회 쿼리 속도가 빠른 방식은 무엇일까? 또한, 어떤 방식이 더 효율적일까?
■ 의견 1
2번이 훨씬 더 빠를거 같아요. 가능하면 배열보다는 hash에 데이터를 미리 저장하는 것이 좋은 방법이 될 거 같습니다. 이유는 1번은 select 할 때마다 like 검색 및 정렬을 하고 있고 또한 검색도 key로 하고 있지 않기 때문에 full search 할 거 같아요.
■ 의견 2
1번이 like 때문에 풀스캔이라고 해도 건수가 너무 적어서 차이는 별로 안날거 같아요.
■ 의견 3
윗분 말씀에 한 표. 데이터가 적어요. 메모리 활용하실 거면 ehcache 함 찾아보세요.
이 글을 읽고 작업 중인 소스 코드를 봤습니다. 데이터베이스 데이터 미리 담아 두거나, 다른 형태로 조회를 하나 상황에 따라 다르겠다는 생각이 드네요.
가정이 너무 단편적이긴 한데, 재밌는 고민하기엔 좋은 글이었네요.
오라클 테이블 복사 후 생성 방법, SQL Developer 사용
MSSQL 동적 쿼리 사용할 상황, 콤마 및 일반 프로시저 문제
ⓒ written by vicddory
데이터베이스 조회 쿼리 속도 비교 2가지, full search 이슈