IT45 STRAIGHT_JOIN과 JOIN_ORDER() 차이점 및 실무 적용 사례 복잡한 SQL 쿼리의 성능을 최적화할 때, 옵티마이저가 비효율적인 실행 계획을 세우는 경우가 종종 있습니다. 이를 제어하기 위해 사용하는 대표적인 힌트가 STRAIGHT_JOIN과 JOIN_ORDER()입니다. 이 두 힌트는 조인의 순서를 지정하는 역할을 하지만, 동작 방식과 활용 시점에서 중요한 차이가 있습니다.이번 글에서는 두 힌트의 차이점과 실무에서의 적용 사례를 함께 알아보겠습니다.1. STRAIGHT_JOIN 이란?STRAIGHT_JOIN은 MySQL에서 INNER JOIN처럼 사용할 수 있는 키워드이며, 조인 순서를 FROM 절에 작성한 순서 그대로 강제합니다.SELECT STRAIGHT_JOIN *FROM table_aJOIN table_b ON table_a.id = table_b.a_id.. 2025. 6. 22. MySQL 옵티마이저 힌트 제대로 사용하는 법 MySQL 8.0.2 버전 이상에서 가능합니다.MySQL에서 쿼리 성능을 개선해야 할 때, 옵티마이저 힌트(Optimizer Hint)를 활용하면 실행 계획을 원하는 방향으로 유도할 수 있습니다. 이번 글에서는 힌트의 기본 문법부터 실무에서 자주 사용하는 예시까지 정리해보았습니다. 1. 옵티마이저 힌트란?MySQL은 쿼리를 실행할 때 옵티마이저가 자동으로 최적의 실행 계획을 선택합니다. 하지만 때로는 예상과 다른 계획이 선택되어 성능이 저하될 수 있습니다. 이럴 때 힌트문을 사용하여 옵티마이저가 따를 실행 계획을 직접 지정할 수 있습니다.힌트는 SQL 주석 안에 /*+ ... */ 형태로 작성합니다.SELECT /*+ HINT */ ...FROM ...2. 자주 사용하는 힌트 종류STRAIGHT_JOIN.. 2025. 6. 20. MyBatis에서 동적 SQL 제대로 쓰는 법 (if, choose, where, trim) MyBatis는 SQL을 XML로 작성하는 방식이기 때문에, 동적 SQL 처리는 매우 중요합니다.실무에서는 입력값에 따라 조건을 달리하거나, 특정 필드만 업데이트하는 등 유연한 쿼리 작성이 필요합니다.이럴 때 MyBatis의 , , , 같은 동적 SQL 태그를 잘 활용하면 효과적으로 처리할 수 있습니다.1. : 조건 분기 처리의 기본가장 많이 사용하는 태그입니다.조건에 따라 SQL 일부를 추가하거나 생략할 수 있습니다. SELECT * FROM users WHERE 1 = 1 AND username = #{username} AND age = #{age} WHERE 1=1은 조건이 없어도 SQL 문법 오류가 나지 않게 하기 위한 패턴입니다.뒤에 오는 AND 조건들을 자연스럽게 .. 2025. 6. 7. [Java] Enum을 JSON으로 직렬화할 때 주의할 점 – @JsonValue, @JsonCreator 활용법 Spring Boot 기반 REST API에서 enum을 사용하는 경우,프론트와 JSON 데이터를 주고받을 때 직렬화(서버 → JSON), 역직렬화(JSON → 서버) 문제가 자주 발생합니다.API 응답 시 Enum.name()이 그대로 나가거나클라이언트에서 String 값을 보냈는데 Jackson이 Enum으로 못 바꾸는 경우이런 상황은 프론트와 API의 통신 오류로 이어질 수 있습니다.이번 글에서는 실무에서 자주 발생하는 Enum 매핑 이슈와이를 해결할 수 있는 @JsonValue / @JsonCreator 사용법을 정리해보겠습니다.기본 Enum 직렬화 방식은?다음과 같은 Enum이 있다고 가정합니다.public enum Status { READY, RUNNING, DONE}기본적으로 Sprin.. 2025. 6. 1. 이전 1 2 3 4 ··· 12 다음 반응형