본문 바로가기

db

(4)
[MyBatis] 마이바티스의 #{}, ${} 차이 ? : 마이바티스에서 #하고 $ 차이 알아요? Me : .....iBatis에서 #으로 썼었나? 저는 마이바티스를 처음 알고 쓴지가 1년 반 정도 된것 같습니다. 근데 정말 아무 생각 없이 쓰다가 최근데 #하고 $의 차이를 아냐는 질문을 듣고 정신이 나가버렸습니다. 질문을 듣자마자 "음..? #{parameter} 이렇게 쓴거 같은데 $도 있었나?" 이렇게 생각이 들고 iBatis에서 $를 쓴거 같기도 하더라구요. 그래서 그냥 버전의 차이 아닌가요?라는 답답한 답변을 해버리고 말았습니다. 1년 반동안 정말 아무 생각도 없이 쓰기만 했네요 ㅎㅎ SELECT ${COLUMN} FROM USER WHERE user_id = #{userId} MyBatis에서 $,#을 사용한 예시입니다. 위의 SQL을 보기전에..
DB의 결합 인덱스에 관해서 분명히 결합인덱스에 포함이 되어있는데 왜 인덱스를 타지 않지??! 최근에 일을 진행하면서 기존 쿼리가 인덱스를 여러개 추가했음에도 인덱스를 사용하지 않고 Table Full Scan을 하는 경우가 발생했습니다. 문제의 원인은 인덱스를 여러개를 충분히 추가해두긴 했지만 결합인덱스에서 우선 설정되지 않은 컬럼으로 조회 조건이 적용되면서 발생한 이슈였습니다. 이번 일로 인해 결합인덱스에 대해 공부가 필요할 것 같아서 간단하게 정리해보겠습니다. 결합인덱스 (Composite Index) 결합인덱스란 복수의 컬럼으로 구성된 인덱스로 복수의 컬럼으로 묶었을 때 데이터 분포도가 좋아지는 경우 사용됩니다. //결합 인덱스 생성 구문 예시 CREATE INDEX idx_composite_index_1 ON Test(id..
[MySQL] Insert 후 PK값 얻어오기 (MyBatis 사용) 임시로 만든 City라는 테이블을 살펴보겠습니다. CITY_ID 가 PK 이면서 AI(auto increment)로 사용하는 입장에서는 다음 id를 쉽게 유추할 수 없습니다. 이 PK 값을 바로 가져와서 insert에 활용하는 등 여러가지 상황이 있을 수 있으니 얻어와보도록 하겠습니다. 이번 예제에서는 MyBatis의 SelectKey를 사용해서 쿼리를 작성합니다. 쿼리 /*keyProperty는 결과값을 넣을 model의 변수명*/ /*order(BEFORE, AFTER)를 통해 Insert 쿼리를 실행 후 가져올지 그 전에 가져올지 정할 수 있다*/ SELECT LAST_INSERT_ID() INSERT INTO USER_INFO ( CITY , COUNTRY_ID , LAST_UPDATE ) VAL..
[Oracle] Partitioned index 오라클 partitioned index에 대해 정리한 글입니다. 1. 파티션 인덱스 인덱스는 데이터베이스 테이블에 있는 데이터를 빨리 찾기 위한 용도의 데이터베이스 객체이며 일종의 색인기술입니다. 테이블에 있는 하나 이상의 컬럼으로 만들어지며 생성되면 인덱스 테이블(index table)을 생성해 관리되게 됩니다. 인덱스도 파티션 테이블과 같이 파티션 인덱스가 존재합니다. 파티션 인덱스는 파티션 유무에 따라 파티션과 비파티션으로 나뉘고 또 Global과 Local로 구분되게 됩니다. 2. 파티션 인덱스 유형 1) Local Partitioned Index / Global Partitioned Index 파티션 테이블에는 파티션키(Partition Key)가 있고 이 키로 테이블이 분할되어 있습니다. 이 ..