본문 바로가기
728x90
반응형

Index3

우왕좌왕 좌충우돌 Slow query 개선 경험기 안녕하세요. 우왕좌왕 좌충우돌 Slow query 개선 경험기를 공유해 보려고 합니다. 혹시 잘못된 내용이 있다면 알려주세요. 피드백은 언제나 환영입니다 :) 큰일이다 어느 날 정산 모듈에 사용자가 몰리면서 전체 시스템에 영향을 준 일이 발생했습니다. 문제의 쿼리는 정산 모듈에서 특정 기간, 특정 사용자의 누적 사용 금액을 조회하는 쿼리였습니다. 정산 시 매번 조회되는 쿼리였기에 개선이 필요한 상황이었습니다. 예제를 위해 Slow query를 필요한 부분만 추출해 보면 아래와 같습니다. SELECT SUM(B.AMOUNT) AS SUM_AMOUNT FROM TB_MST A , TB_DTL B WHERE A.ID = B.ID AND A.DATES BETWEEN '20230101' AND '20230831'.. 2023. 8. 18.
[DB] 인덱스(Index) 사용 예시 (생성, 조회, 삭제, 리빌드) 들어가면서.. 인덱스를 사용하는 방법을 알아보려 한다. 예전에 실습용으로 잠깐 만들어 두었던 B 테이블을 가지고 간단한 예제를 진행해 보려고 한다. 인덱스(Index) 사용 예시 ① 인덱스 생성 --문법 CREATE INDEX [인덱스명] ON [테이블명](컬럼1, 컬럼2, 컬럼3.......) --예제 1) 기본 CREATE INDEX EX_INDEX ON B(B_NO, B_TITLE); --예제 2) 컬럼 값 중복 허용 x 인 인덱스 생성 CREATE[UNIQUE] INDEX EX_INDEX ON B(B_NO, B_TITLE); 위와 같이 쿼리문을 작성하면 INDEX를 생성할 수 있다. CREATE 뒤에 UNIQUE 키워드를 붙이면 컬럼 값에 중복 값을 허용하지 않는다는 뜻이다. ② 인덱스 조회 --.. 2021. 9. 17.
[DB] 데이터베이스(DB) 인덱스(Index) 란 무엇인가? 들어가면서.. DB를 사용하면서 데이터의 양(row)에 따라 실행 결과의 속도가 차이가 나는 것을 알고 있었다. 특히 데이터의 양이 증가할수록 실행 속도는 느려지고, JOIN이나 서브 쿼리 사용 시 곱 연산이 일어나 데이터 양이 증가하기 때문에 WHERE 조건에서 필요한 데이터만 추출 후 사용하는 것이 좋다고 알고 있었는데, 보다 쿼리의 성능을 높이는 데 중요한 것은 인덱스를 적재적소로 활용하는 것이었다. 그렇다면 인덱스의 개념과 구조, 그리고 왜 사용하는지?, 사용했을 때 장점과 단점들에 대해 공부해보도록 하자. 인덱스(Index)란? 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조라고 한다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간.. 2021. 9. 13.
728x90
반응형