본문 바로가기

전체 글262

[mysql] 조회, Index냐 Full Scan이냐 데이터가 제법 쌓여있는 테이블이 있는데, 거기를 조회할때마다 가급적이면 인덱스를 쓰겠금 유도한다. 그런데 최근 SQLP 공부하면서 인덱스를 무조건 태우는 것이 좋지 않암을 많이 깨닫는다. 그럼 인덱스를 사용할때와 아닐때의 차이는 어느 기준으로 분류해야할까를 찾아보고 정리해보앗다. 진행은 MySQL로 했으며 해당테이블은 약 2억개의 데이터가 탑재되어 있는 거래정보 테이블이며, 고객테이블과 조인하는 고정이었다. 특정 기간을 조회하는 일이 빈번해서 생성일자를 기반한 인덱스가 생성되어있는 상태다. 특정기간 데이터를 조회하려는 것이었고, 조회조건에 생성일자 범위를 넣어 조회했다. 그런데 다음과 같이 인덱스가 아닌 Full scan(ALL)이 되고 있었다. 실행결과는 약 15분정도 소요됐다. 이번에는 힌트를 이용해.. 2023. 4. 18.
ANSI 표준 ANSI SQL DBMS(Oracle, My-SQL, DB2 등등)들에서 각기 다른 SQL를 사용하므로, 미국 표준 협회(American National Standards Institute)에서 이를 표준화하여 표준 SQL문을 정립 시켜 놓은 것이다. 어디서나 통용될 수 있는 공통적인 기준 " 이라고 볼 수 있다. 이러한 ANSI는 SQL에서도 찾아볼 수 있으며, 대표적으로 JOIN 구문에서 확인할 수 있다. ANSI의 뜻 미국 국립 표준 협회(American National Standards Institute, ANSI) 미국의 산업 표준을 제정하는 민간단체이며, 국제표준화기구 ISO에 가입되어 있다. ANSI에서 제정된 표준을 ANSI라고 부르기도 한다. 1918년 AESC란 이름으로 창설되었으나,1.. 2023. 4. 18.
API 조회 성능 최적화 - 컬렉션(Fetch Join, distinct) 0. 개요 - 이전 포스팅에서 DTO 변환을 이용한 컬렉션 조회 방법을 알아보았다. - DTO 변환 방법을 사용하여 컬렉션 조회 시, 다수의 SQL 문이 발행된다는 문제점을 확인하였다. - 이 문제를 해결하기 위해 Fetch Join을 이용한 컬렉션 조회 방법을 알아보자. 1. DTO 변환 + Fetch Join a) Fetch Join 쿼리 작성 - 우선 Fetch Join을 이용하는 쿼리를 작성해보자. - 쿼리는 다음과 같다. public List findAllWithItem() { return em.createQuery("select o from Order o " + "join fetch o.member " + "join fetch o.delivery " + "join fetch o.orderIte.. 2023. 4. 18.
[검색엔진] 코난테크놀로지 konan search 4 소개 2023. 4. 17.
[Spring]Ajax에서 보낸 배열을 Controller에서 받기 비동기 전송을 위해서 Ajax를 사용하던중 클라이언트에서 배열을 담아서 보낼일이 생겼다. 이 전까지는 단순히 값만 json 형식으로 보냈었다. 그럼 배열은 어떤 형식으로 보내고 어떤 방식으로 받아야 하는 것일까? 먼저 checkBox를 이용해서 체크된 값들을 new Array()에 담는다. 그리고 자바스크립트 객체 형식으로 data에 담아서 보낸다. 이 때 반드시 post 형식으로 보내야 한다. var checkArr = new Array(); ... $.ajax({ url : "/shop/deleteCart", type : "post", data : { chbox : checkArr }, success : function(result){ if(result == 1) { location.href = "/.. 2023. 4. 13.
@RequiredArgsConstructor 어노테이션을 사용한 "생성자 주입" 의존성주입의 종류로는 Constructor(생성자),Setter,Field 타입이 있다. Constructor(생성자) public class ExampleCase { private final ChocolateService chocolateService; private final DrinkService drinkService; @Autowired public ExampleCase(ChocolateService chocolateService, DrinkService drinkService) { this.chocolateService = chocolateService; this.drinkService = drinkService; } } Setter public class ExampleCase{ private.. 2023. 4. 11.