쇼핑물 사이트에 흔한 기능으로 낮은 금액순, 높은 금액순으로 정렬하는 기능이 있습니다. 금액 순으로 정렬하고 페이지를 선택해 원하는 데이터를 가져옵니다. 이 기능을 VIEW를 이용해 구현해보려 합니다. VIEW 사용 이유일정 범위의 데이터를 조회할 때 자주 사용하는 방식은 OFFSET, LIMIT을 사용하는 방식입니다. 이 방식은 처음부터 시작해 OFFSET을 찾고 그 다음부터 LIMIT까지 데이터를 가져옵니다. 즉, 가져올 데이터가 뒤에 있으면 거의 모든 테이블을 탐색합니다. 이 방식은 데이터셋이 커지면 성능이 저하됩니다. OFFSET, LIMIT 대신 BETWEEN을 사용했습니다. PAGE를 입력 받으면 SIZE를 이용해 시작과 끝 범위를 구해 해당 범위에 데이터만 접근하는 방식입니다. 이 방..
개발 일지/OMS 프로젝트
개요이번에는 최신순으로 상품들을 조회하는 SQL 튜닝합니다.SQL에서 사용한 테이블은 item, brand 두 개로 item 테이블에는 10_000개의 데이터가 brand 테이블에는 10개의 데이터가 있습니다. 기존 SQL select i.item_seq, b.brand_name, i.item_name, i.item_price from item as i join brand as b on i.brand_seq = b.brand_seq where i.item_seq between #{startOffset} and #{endOffset} order by item_seq desc기존의 itemMapper.xml에서 SQL 입니다. 이 방식은 item 테이블과 brand 테이..
SQL의 offset페이지 단위로 데이터를 가져올 때 offset과 limit 방식을 사용했습니다. offset으로 시작 위치를 정하고 limit 만큼 데이터를 가져오는 방식입니다. 하지만 offset에는 단점이 있습니다. 바로 데이터셋이 커지면 성능 저하 문제를 일으킬 수 있다는 것 입니다. 그 이유는 offsest 방식이 데이터의 처음부터 주어진 offset까지 모든 행을 읽고 그 다음부터 limit 만큼의 데이터를 반환하기 때문입니다. 이로 인해 처리해야 할 데이터가 많아질수록 효율이 떨어집니다. 이 부분을 해결하기 위해 offset 대신 where에 > 범위 검색과 between을 도입하 성능을 비교해보겠습니다. Item, Brand 테이블 이번에 사용할 item과 brand 테이블 입니다. ..
설정 값프로젝트를 진행하다보면 설정 값이 필요합니다. 프로젝트에서 사용하는 설정 값들의 예시는 다음과 같습니다.데이터베이스 설정 서버 설정보안 설정로깅 설정메일 설정API 키 및 외부 서비스 연동페이지네이션 등등...이러한 설정 값은 Java 소스 코드가 아닌 설정 파일에서 따로 관리하면 얻는 이점이 있습니다. 설정 파일로 설정 값을 관리하는 이유설정 값을 자바 코드에서 분리하여 application.properties나 application.yml 파일로 관리하면 다음과 같은 장점이 있습니다. 관리와 보안이 좋아집니다. 설정 정보를 한 곳에 관리하여 유지 보수가 좋아지고 민감한 정보(비밀번호, API 키 등)가 소스코드에서 분리되어 보안이 강화됩니다.유연성과 확장성이 좋아집니다. 개발, 테스트, ..