IT 일기장
[DB 공통] 인덱싱 작업 본문
내가 진행하는 프로젝트 중 검색 제목, 검색 키워드, 검색 내용을 추가해서
그 3개와 연관된 제목과 컨텐츠 상세까지 보여주게 해달라는 요청 건이 들어왔다.
수석님께 도움을 요청했다. "가능하지만 관리자 쪽에서 직접 수기로 작성해야 되고 검색속도는 보장 못한다.
우리는 검색 솔루션 회사가 아니기 때문에 그 부분은 감안해야된다."
라고 얘기해주셔서 우선 기획자분이 컨펌 안받았으니 미리 개발 하지말고 대기하라고 해주셨다
그리고나서 수석님이 인덱스에 대해서 가르쳐주셨는데 난 단순히 "속도 빠르게 해주는거다."
라고만 기억하고 있었을뿐, 어떤 방법으로 속도를 빠르게 해주는건지는 몰랐다.
수석님의 설명을 들어보니 이해가됐다..
예를들어 1000장 짜리 종이로 써져있는 회원들의 정보가 있다고 하자.
이 1000장 짜리 종이에서 "홍길동"라는 회원의 이름을 찾아야 된다고 하면 정말 힘들것이다.
그럼 이제 1000장짜리에서 이름만 적혀있는 부분을 옮겨서 엑셀 파일에 저장해서 검색 한다고 하자.
그럼 Ctrl + F 누르고 "홍길동" 입력해서 검색하면 끝이다. 정말 쉽다.
이렇게 검색 속도를 빠르게 해주도록 도와주는 일련의 과정들을 인덱싱 작업이라고 하더라.
그럼 이 인덱싱 작업을 실무에서는 어떻게 할까?
현재 사이트에 내용이 들어가는 content 컬럼은 모두 CLOB 타입이다.
이 CLOB 타입은 이 인덱싱 작업이 불가능하다. 그래서 속도가 느려질 수 밖에 없다카더라..
이럴 때 바로 인덱싱 작업을 해주는거다.
검색 솔루션도 이와 유사항 방법을 사용 한다고하니 정리해둔다.
- 검색한 Content의 데이터를 가져온다.
- CLOB의 데이터를 나눈다.
- 테이블 새로 하나 파서 VARCHAR나 VARCHAR2 타입 컬럼에 삽입한다. (최대 4000까지 들어가므로 적당한 수치로 나눠서 잘라주면 될거같다.)
- 새로 만들어진 테이블은 스케줄러를 돌려줘야한다. 왜냐하면 검색하는 테이블은 내용이 바뀔수도 있으니까 새로 만들어진 테이블에 계속 쌓이게 해줘야된다. (보통은 1일을 주기로 한다고 한다.)
- 새로 만든 테이블을 조회하면 끝
'프로그래밍 언어 > SQL(DB)' 카테고리의 다른 글
[Oracle] 주석(설명문) 추가 (0) | 2021.12.20 |
---|---|
[SQL] MYSQL vs MariaDB (0) | 2021.12.15 |
[MySQL] 그룹 별로 각 게시물에 답변과 댓글 수 통계 구현 (0) | 2021.12.12 |
[Oracle] sqldeveloper 중국어 일본어 깨짐 현상 (0) | 2021.12.09 |
[MySQL] TIMESTAMPDIFF() (0) | 2021.12.08 |