전체 텍스트 검색
검색 엔진
char, nchar, varchar, nvarchar, text, ntext, xml, image, varbinary(max) 등이 대상
나중엔 text, ntext, image 데이터 형식은 제외. 따라서 가급적 사용하지 않는 방향으로...
수행 단계
모든 단어들은 전체 텍스트 인덱스에 저장
카탈로그는 위 인덱스들을 저장하고 있는 개념
Contains 함수와 Containstable 함수
Contains 함수 WHERE 절에 문자열 필드에 대한 검색조건을 수행
Containstable 함수는 FROM 절에 문자열 필드에 대한 검색조건을 수행
Contains 함수 사용
예로 select * from A where a = 1 and contains(b, '테스트') 쿼리를 수행할 시 실행계획은 select * from A where a = 1 와 select * from A where contains(b, '테스트') 두 번이 수행되어 읽어들이는 데이터 수가 많음. 그 만큼 메모리를 잡아먹게 됨
인덱스가 있을 시엔 merge join, 없을 시엔 hash join을 수행
Containstable 함수 사용
예로
select a.*
from A a
inner join (
select [key] from containstable(A, b, '테스트')
) b
on a.a = b.[key]
쿼리를 수행할 시
실행계획은 select [key] from containstable(A, b, '테스트') 조회된 데이터에서 다시 자기 자신과 내부조인을 하므로 읽어들이는 데이터 수가 적음
끝.
'DB' 카테고리의 다른 글
Oracle에서 iBatis batch 사용 - 대용량 업데이트 시 (0) | 2013.01.02 |
---|---|
MySQL 5.1 사용자(계정) 추가 (0) | 2012.02.04 |
SQL로 카테고리, 트리, 계층 구조의 구현 (0) | 2011.10.18 |
Apache Derby (더비) (0) | 2011.09.11 |
SQuirreL SQL Client (0) | 2011.09.07 |
댓글