본문 바로가기
반응형

2020/027

[dbms] where에 In 절 사용 시 알아두면 좋은 것 실무에서 in 절을 자주사용한다. 예를 들면 다음과 같은 경우다 select * from test_a a where id in (1,2,3) 위 쿼리가 실행되면 id가 1,2,3인 row를 조회해서 가져온다. in절은 row를 하나씩 점검하며 값이 존재하는지를 확인한다. 프로그램으로 보면 for 문을 돌리는 느낌이랄까. ​ 그런데 In 절은 사실상 다음 같은 쿼리와 같은 결과를 낸다. select * from test_a where id = 1 union all select * from test_a where id = 2 union all select * from test_a where id = 3 여기서 인덱스 여부가 중요하다. 인덱스가 설정되어 있는 칼럼이라면 위와 같은 접근이 훨씬 좋은 퍼포먼스를 .. 2020. 2. 27.
[mysql] 조회, Index냐 Full Scan이냐 데이터가 제법 쌓여있는 테이블이 있는데, 거기를 조회할때마다 가급적이면 인덱스를 쓰겠금 유도한다. 그런데 최근 SQLP 공부하면서 인덱스를 무조건 태우는 것이 좋지 않암을 많이 깨닫는다. 그럼 인덱스를 사용할때와 아닐때의 차이는 어느 기준으로 분류해야할까를 찾아보고 정리해보앗다. 진행은 MySQL로 했으며 해당테이블은 약 2억개의 데이터가 탑재되어 있는 거래정보 테이블이며, 고객테이블과 조인하는 고정이었다. 특정 기간을 조회하는 일이 빈번해서 생성일자를 기반한 인덱스가 생성되어있는 상태다. 특정기간 데이터를 조회하려는 것이었고, 조회조건에 생성일자 범위를 넣어 조회했다. 그런데 다음과 같이 인덱스가 아닌 Full scan(ALL)이 되고 있었다. 실행결과는 약 15분정도 소요됐다. 이번에는 힌트를 이용해.. 2020. 2. 21.
[junit5] 생성자만 열려있는 오브젝트 테스트하기(mockito) 설정을 담당하는 Bean 이 있다면 자동으로 contractor 이 될것이기 때문에 값이 자동으로 주입된다 가령 다음과 같은 것 형태다 application.properties test.string.one = test-one test.string.two = test-two Configuration Bean @Configuration public class TestConfig { @Value("${test.string.one}") private String testOne; @Value("${test.string.two}") private String testTwo; public String getTestOne() { return testOne; } public String getTestTwo() { ret.. 2020. 2. 20.
[java] objectMapper로 object->string(json) 변경 시 LocalDate 를 yyyy-MM-dd 포멧하기 DTO에 저장되어 있는 값을 Json (String) 형태로 변환하려고 할 때 찾은게 ObjectMapper 이다. 그런데 ObjectMapper 를 그냥 사용하면 보기편한 날짜형태가 아닌, 다음과 같은 형태로 변환된다. "createdDt":{"year":2020,"month":"FEBRUARY","monthValue":2,"dayOfMonth":18,"dayOfWeek":"TUESDAY","leapYear":true,"dayOfYear":49,"era":"CE","chronology":{"id":"ISO","calendarType":"iso8601"} 테스트 환경을 위해 2개의 오브젝트를 생성했다 import java.time.LocalDate; public class TestDto { private.. 2020. 2. 19.
[java] NoSuchMethodError MockitoLogger 에러가 날 때 MockitoExtension.class 를 이용한 단위테스트를 신규작성하다 다음 에러가 발생 (정확히는 @Mock을 쓰려고 한건데...) java.lang.NoSuchMethodError: org.mockito.internal.configuration.plugins.Plugins.getMockitoLogger()Lorg/mockito/plugins/MockitoLogger; at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:172) ... 확인해보니 mockito-core 가 2.24.0 이상으로 변경하니 해결됐다는 말을 봤다. 내 경우도 확인해보니 mockito-junit-jupiter:3.1.0 에 따라온 2.. 2020. 2. 18.
[intellij] junit 으로 작성한 테스트가 gradle 로 실행될때 Junit 으로 작성된 클래스를 GUI로 실행하면 콘솔창에 다음과 같이 실행된다. Testing started at 6:45 오전 ... > Task :cleanTest UP-TO-DATE > Task :compileJava UP-TO-DATE > Task :processResources NO-SOURCE > Task :classes UP-TO-DATE > Task :compileTestJava UP-TO-DATE > Task :processTestResources NO-SOURCE > Task :testClasses UP-TO-DATE > Task :junitPlatformTest FAILED 내용을 확인하면 Gradle 로 수행되었다.. runnable 설정을 봐도 gradle로 되어있다 이는 Gra.. 2020. 2. 13.
반응형