db서버사양 - sql 2008
두개의 테이블 s_pay와 s_worker 테이블을 INNER JOIN으로 하여 뷰테이블 아래와 같이 생성하였습니다.
SELECT TOP (100) PERCENT dbo.s_pay.p_no, dbo.s_pay.p_spayday, dbo.s_pay.p_epayday, dbo.s_pay.p_sendday, dbo.s_pay.p_gubun, dbo.s_pay.w_id,
dbo.s_pay.p_juya, dbo.s_pay.p_stime, dbo.s_pay.p_etime, dbo.s_pay.p_sex, dbo.s_pay.p_dailypay, dbo.s_pay.p_realpay, dbo.s_pay.p_monday,
dbo.s_pay.f_id, dbo.s_pay.c_no, dbo.s_pay.p_etc, dbo.s_pay.p_resultday, dbo.s_pay.p_realfid, dbo.s_pay.p_part, dbo.s_pay.p_realchunggu,
dbo.s_pay.p_expen, dbo.s_pay.p_woosung, dbo.s_pay.p_mangun, dbo.s_pay.p_mdate, dbo.s_pay.p_metc, dbo.s_pay.p_mpay,
dbo.s_worker.w_name, dbo.s_worker.w_cell, dbo.s_worker.w_grade, dbo.s_worker.w_jumin
FROM dbo.s_pay INNER JOIN
dbo.s_worker ON dbo.s_pay.w_id = dbo.s_worker.w_id
ORDER BY dbo.s_pay.p_no DESC
그리고 아래는 값을 불러오는 쿼리문입니다.
strSQL = SELECT * FROM vwservice_pay WHERE (p_spayday between '"&startday&"' and '"&endday&"') and (w_name LIKE '" & Replace(sr, "'", "''") & "%') and p_realfid LIKE '" & Replace(sf_name, "'", "''") & "' ORDER BY p_no desc;
order by 구문을 사용하니 쿼리실행속도가 너무느려저 order by 구문을 삭제하고 쿼리를 실행하면 실행속도가 상당히 개선되었습니다.
그런데 문제는 order by 구문을 삭제하고 쿼리를 실행하면 정렬순서가 INNER JOIN시 사용한 컬럼(w_id ) 별로 정렬이 되어버립니다.
정렬순서가 p_no순서로 되어야 되는데 방법이 없을까요?
고수분들의 조언 부탁드립니다.
Comment 1
-
처리짱
2015.08.13 17:16
단순히 order by를 빼서 쿼리 성능이 좋아 좋다면.
결과물을 into로 뽑아낸다음에
결과물을 order by 해보심은...
저같은 경우에는 order by에 연산이 들어가거나 데이터가 많으면.
클라이언트 단에서 데이터를 정렬합니다..