안녕하세요.

날짜와 관련된 속도 문의 드립니다.

northwind 데이터베이스에서 연습하고 있구요.

Orders테이블에 orderDate가 넌클러스터인덱스로 돼있고 타입은 datetime입니다.


예를들어 제가 2000년 5월 조건만 추출하고 싶다고 가정합니다.

첫번째 쿼리는 SARG를 모르고 orderDate에 연산을 넣었던 쿼리입니다.

SELECT * FROM orders WHERE datepart(yy, orderDate) = 1998 AND datepart(mm, orderDate) = 5

두번째 쿼리는 제 나름 SARG에 대해 공부했다 생각하고 작성한 쿼리입니다.

SELECT * FROM orders WHERE orderDate BETWEEN convert(datetime, '1998-05-01') AND convert(datetime, '1998-05-31')

(더 좋은 쿼리가 있다면 알려주세요.)

아래는 쿼리에 대한 결과입니다.

왜 첫번째 쿼리가 더 빠를까요??

convert(datetime, '날짜') 형식에서 과도한 연산이 발생하는걸까요?

11.PNG

아래는 논리적 읽기수인데 이건 두번째가 더 낮네요. 속도를 판별할때 어떤것이 기준이 되어야 하나요?

논리적읽기수, 쿼리비용, 예상IO비용, 예상CPU비용 어떤건가요?

첫번째 쿼리 읽기수

테이블 'Orders'. 검색 수 1, 논리적 읽기 수 33

두번째 쿼리 읽기수

테이블 'Orders'. 검색 수 1, 논리적 읽기 수 22


예상IO비용 비교

첫번째 : 0.0087

두번째 : 0.0170

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 1262
6662 select 쿼리 도와주세요.. [1] neiyan 2013.04.08 6252
6661 MSSQL2008R2 일정시간 에러가 납니다. [2] minnin 2013.04.08 6105
6660 db로그 크기가 줄질 않습니다. [2] inter1098 2013.04.08 6468
6659 MSSQL과 MYSQL 연동 문제 입니다. [3] minnin 2013.04.08 12626
» 날짜 조건에서 쿼리 속도차이 [3] 화성에서왔어요 2013.04.08 9328
6657 Job이 이전으로 돌아갑니다. [1] 군고구마 2013.04.08 5364
6656 랜덤으로 한번 뽑은 수를 중복 없이 다시 랜덤으로 출력하려고 합니다. [1] 풋사과 2013.04.05 8843
6655 몇일전부터 자동백업이 실행이 되지 않고, 해당오류만 나타납니다.. 도와주세요~~~ [7] 오래된흰냥a 2013.04.05 6684
6654 저장 프로시저 실행 빈도 횟수를 구하고 싶은데요. [2] 나는짱이야 2013.04.05 10097
6653 sql 2005 workgroup edition [3] 어쭈 2013.04.05 6562
6652 조인 후 NULL행에 대한 출력? [9] 화성에서왔어요 2013.04.05 5891
6651 'N 처리 질문 [2] 형님 2013.04.05 6092
6650 catchv님 답변 감사드리며 추가질문 올려봅니다~~ [3] 전혜연 2013.04.05 5362
6649 합계에 합계더하기 [2] q0822kang 2013.04.04 9730
6648 작업후 메일 보내기 기능 관련 질문 [2] 우이띠 2013.04.04 5912
6647 txt화일 데이타 가져오기 어떻게 할까요? [3] 전혜연 2013.04.04 6971
6646 join 관련 질문 [3] 형님 2013.04.03 5549
6645 흐억..........갑자기 디비 접속이 안됩니다...(도와주세요..ㅠ.ㅠ) [3] 문수정 2013.04.03 5773
6644 테이블 구조 질문입니다.. [2] Sisylian 2013.04.03 5434
6643 LIKE 문 질문입니다. [4] 군고구마 2013.04.03 5499





XE Login