SELECT id,
ipaddr,
model,
groupcode,
last_print_time,
pages,
printcount,
computation_price
FROM (SELECT Row_number() OVER (ORDER BY ipaddr DESC, id DESC) AS rownum,
id,
ipaddr,
model,
groupcode,
last_print_time,
Isnull(SUM(pages), 0) AS pages,
Isnull(COUNT(pages), 0) AS printcount,
Isnull(SUM(computation_price), 0) AS computation_price
FROM printer AS p
LEFT OUTER JOIN (SELECT printerid
FROM pe_usage
WHERE print_time > '20100324000000'
AND print_time < '20110324999999') AS pu
ON ( p.id = pu.printerid )
LEFT OUTER JOIN state_code AS sc
ON ( p.statcode = sc.code )
GROUP BY id,
ipaddr,
model,
groupcode,
last_print_time) t1
WHERE rownum BETWEEN 201 AND 210
rownum을 이용한 페이징을 위한 쿼리입니다.
보시는것처럼 지정한 날짜 사이에 있는 것을 가져와 ipaddr, id 순으로 정렬한 뒤 rownum을 이용해 해당 번호만 가져오는 것인데요
이게 속도가 왜이렇게 느린지 모르겠습니다...
데이터는 270만건 정도입니다.
왜 느린지.. 해결책은 있는지 답변 부탁드립니다.