테이블구조때문에 어쩔수 없이 아래와같이 쿼리해야합니다
SELECT ~~
FROM XXX
WHERE (yyyy + mm >= @yyyy + @mm)
이렇게 되면 yyyy와 mm 에 걸려있는 인덱스를 참조하지 못하는걸로 알고 있습니다.
보통 이럴경우 좋은 해결방법이 있는지 궁금해서 질문드립니다.
데이터의 type 등과 같은 자세한 내용이 없어서 어쩔 수 없이 아래와 같이 답변드립니다.
계산 열(computed column)을 만들어서 해당 열에 인덱스를 거는 방법
이름만 달랐지 indexed view를 이용한 방법도 있긴 하겠습니다.
쿼리로 해결하자면
WHERE ( (yyyy > @yyyy ) or ( yyyy = @yyyy and mm >= @mm ))
이렇게 하면 될듯
이정재님 방법은 테이블의 yyyy, mm 그리고 파라미터의 @yyyy, @mm이 이름으로부터 년도와 월이라고 가정을 했을때의 방법으로 보입니다.
정수값들이었어서 yyyy = 1, mm = 4, @yyyy = 2, @mm=2 이면 어떻할지...
문자였더라도 yyyy = '1', mm = '13', @yyyy = '11', @mm = '2' 였으면 어떻할지...
뭐 or로 인해서 성능이 덜 나올 수 있는 건 둘째치더라도 말이죠. *^_^*
답변주신 두분께 진심으로 감사드립니다.
제 질문내용이 충분하지 못했네요..
2컬럼 전부 문자열이구요.
두 방법 모두 훌륭한 기법이네요. 미처 생각하지 못했습니다.
진심으로 감사드립니다.