database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 5879 게시물 읽기
No. 5879
검색 조건에서 LIKE절 관련 질문입니다
작성자
JaCkalRedi
작성일
2011-04-27 11:26
조회수
6,447

책을 보다가 알게된 내용중에 LIKE절이 성능을 저하시키는 요인중에 하나라는것을 알고

직접 간단한 쿼리로 실험을 해봤는데요...

의외의 결과를 알게되서 질문을 드립니다

제가 실험을 한 패턴은 3가지인데요, 당연히 아시겠지만

% 이 문구가 앞이냐 뒤냐 아니면 앞뒤로 있느냐 를 가지고 실행계획을 보면서

쿼리를 돌려봤는데

제가 생각할때는 %가 뒤에 왔을땐 인덱스 스켄을 쓰고

나머지 경우엔 풀스켄을 할 것 이라고 생각을 했는데, 의외로

%가 앞에 온 경우 말고는 전부 인덱스 스켄을 하더군요...ㅡ_ㅡ;;

즉 앞뒤로 %게 있을경우도 인덱스 스켄을 사용하더라구요

그리고 또하나 %가 앞에 온경우는 %뒤에 오는 글자가 한글자인 경우 인덱스 스켄을 하고

두자 이상인 경우는 인덱스 조인을 해서 스켄을 하더라구요.....

참고로 제가 사용하는 버젼은 MSSQL2005입니다.......

고수님들 알려주세요...ㅠㅠ

어떻게 인덱스 스켄이 일어나져...ㅠㅠ 

알고싶습니다~~~

이 글에 대한 댓글이 총 1건 있습니다.

음....전부 같은 Clustered Index Seek가 발생하는건 맞는데요....IO비용이 전부 다르더군요....

%가 뒤에만 있는경우를 제외하고 앞뒤로 있거나 앞에 있는경우는 IO비용이 seek가 아니라 scan과 동일하더군요...

근데 어째서 Execution Plan에는 index seek로 나오는거죠?....흠...

JaCkalRedi님이 2011-05-11 11:12에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5882int형식으로 저장된 datetime값을 datetime형식으로 나타내고 싶을 때... [1]
이은규
2011-05-02
6243
5881동일한 디비 환경 구성 질문드립니다. [1]
mssql
2011-04-29
6209
5880세상에 이런일이 ㅠㅠ.. 도저히 이해되지 않습니다. [1]
큰일
2011-04-28
6105
5879검색 조건에서 LIKE절 관련 질문입니다 [1]
JaCkalRedi
2011-04-27
6447
5878내일 MDF파일을 다른 서버로 옮깁니다.
청년재벌
2011-04-25
6700
58771:N관계에서 N테이블에 원하는 값이 있다면 [4]
조중규
2011-04-24
6405
5876레코드 값 합치는 방법 [1]
이수연
2011-04-22
6124
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다