안녕하세요?

제가 mssql 초보라 문의 드립니다.

인덱스가 아래와 같이 구성되어 있습니다.

orderdate   char(8)

create nonclustered index orders_range_x02 on orders_range(orderdate, customerid)

아래는 튜닝 대상 SQL 입니다.

select orderdate, customer

  from orders_range

 where orderdate between '19971230' and '19980102'

   and customerid = 'QUICK'

 group by orderdate

go

인덱스 컬럼 순서만 바꾸면 block io가 줄어들지만, 인덱스를 건드리지 않고 sql 수정해서 block io를 줄이고 싶습니다.

오라클인 경우 아래와 같이 변경해서 간단히 해결 가능한데...

select orderdate, customer

  from orders_range

 where orderdate in (select to_char(to_date('19980102','yyyymmdd') - level + 1), 'yyyymmdd')

                               from dual

                             connect by level <= to_date('19980102','yyyymmdd') - to_date('19971230','yyyymmdd') + 1)

   and and customerid = 'QUICK'

 group by orderdate


mssql에서도 간단히 disk I/O 없이 19980102, 19980101, 19971231, 19971230 ... 을 만들어 낼 수 있는 방법이 있나요?