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 6431 게시물 읽기
No. 6431
컬럼변조에서 인덱스 문제
작성자
조중규(biosensor)
작성일
2012-10-29 16:57
조회수
7,119

테이블구조때문에 어쩔수 없이 아래와같이 쿼리해야합니다

 

SELECT ~~

  FROM XXX

 WHERE (yyyy + mm >= @yyyy + @mm)

 

이렇게 되면 yyyy와 mm 에 걸려있는 인덱스를 참조하지 못하는걸로 알고 있습니다.

보통 이럴경우 좋은 해결방법이 있는지 궁금해서 질문드립니다.

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

 데이터의 type 등과 같은 자세한 내용이 없어서 어쩔 수 없이 아래와 같이 답변드립니다.

 

계산 열(computed column)을 만들어서 해당 열에 인덱스를 거는 방법

이름만 달랐지 indexed view를 이용한 방법도 있긴 하겠습니다.

 

 

우욱님이 2012-10-30 11:16에 작성한 댓글입니다. Edit

 

SELECT ~~

FROM XXX

WHERE (yyyy + mm >= @yyyy + @mm)

 

쿼리로 해결하자면

WHERE  ( (yyyy > @yyyy )  or ( yyyy = @yyyy and mm >= @mm )) 

이렇게 하면 될듯

이정재(ljjang)님이 2012-10-30 16:12에 작성한 댓글입니다.

 이정재님 방법은 테이블의 yyyy, mm 그리고 파라미터의 @yyyy, @mm이 이름으로부터 년도와 월이라고 가정을 했을때의 방법으로 보입니다.

 

정수값들이었어서 yyyy = 1, mm = 4, @yyyy = 2, @mm=2 이면 어떻할지...

문자였더라도 yyyy = '1', mm = '13', @yyyy = '11', @mm = '2' 였으면 어떻할지...

 

뭐 or로 인해서 성능이 덜 나올 수 있는 건 둘째치더라도 말이죠. *^_^*

 
우욱님이 2012-10-31 09:29에 작성한 댓글입니다.
이 댓글은 2012-10-31 09:30에 마지막으로 수정되었습니다. Edit

답변주신 두분께 진심으로 감사드립니다.

 

제 질문내용이 충분하지 못했네요..

 

2컬럼 전부 문자열이구요.

 

두 방법 모두 훌륭한 기법이네요. 미처 생각하지 못했습니다.

 

진심으로 감사드립니다.

조중규(biosensor)님이 2012-11-03 22:28에 작성한 댓글입니다.
이 댓글은 2012-11-03 22:32에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
6434login , logout trigger [2]
노진광
2012-11-01
7457
6433mssql 의 동적 쿼리 검색인데 도와 주세요~ [1]
김기철
2012-10-31
9004
6432테이블 합쳐서 조회하기 [1]
초보
2012-10-31
7561
6431컬럼변조에서 인덱스 문제 [4]
조중규
2012-10-29
7119
6429FETCH 내에서 TRANACTION을 사용하면? [1]
하광희
2012-10-28
7790
6428[질문]SQL 2012에서 트랜젝션 로그 삭제 [2]
손덕진
2012-10-26
11949
6427쿼리 질문드리겠습니다. [1]
박종훈
2012-10-19
7930
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다