전체 범위의 날짜를 어떻게 만들 수 있습니까? 감사합니다캘린더 생성
Q
캘린더 생성
0
A
답변
0
Mitch Wheat이 제안한 바와 같이이 쿼리의 성능을 향상시키는 가장 좋은 방법은 날짜 목록을 생성하는 데 사용되는 순환 CTE 대신 numbers table을 사용하는 것입니다. 하다니
DECLARE @t TABLE(startdate DATETIME , enddate DATETIME)
INSERT INTO @t
SELECT '8/01/2009','08/31/2009' UNION ALL
SELECT '2/01/1900','02/28/1900' UNION ALL
SELECT '10/01/1959','10/31/1959'
DECLARE @n INT
SET @n = DATEDIFF(dd,'19000201','20090831') + 1
;WITH base
AS
(
SELECT 1 AS n
UNION ALL
SELECT n+1 FROM base
WHERE n < CEILING(SQRT(@n))
)
,cross_cte
AS
(
SELECT 0 AS c
FROM base AS b1
,base AS b2
)
,dates_cte
AS
(
SELECT TOP(@n) CAST('19000201' AS DATETIME) - 1 + ROW_NUMBER() OVER(ORDER BY c) AS date
FROM cross_cte
)
SELECT DISTINCT d.DATE
FROM Dates_Cte d
JOIN @t t
ON d.DATE BETWEEN t.startdate AND t.enddate
OPTION (MAXRECURSION 0);
: 당신이 또는 숫자 테이블을 사용하지 않을 수없는 경우
, 날짜 범위 CTE의 성능은 Itzik 벤 웨이 코 뮤니시에서 제안하는 방법을 사용하여 큰 범위에 대한 개선 될 수있다 실행 계획은이 버전이 원본 (= ~ 1 %)보다 약간 비효율적이라고 보여 주며 시스템에서 SET STATISTICS TIME
으로 측정하면이 버전의 경과 시간과 CPU 시간이 모두 절반 이하로 표시됩니다.
+0
@ priyanka.bangalore - 기술은 CTE를 효율적으로 사용하여 날짜에 관계없이 많은 수의 숫자를 생성하는 것과 관련이 있습니다. Solid Quality Learning의 "Inside SQL Server 2005"책 중 하나라고 생각합니다. T-SQL 프로그래밍 중 하나라고 생각합니다. http://www.amazon.co.uk/gp/product/0735621977 –
관련 문제
- 1. 의도를 가로 채기 (캘린더 이벤트 생성 용)
- 2. 아이폰 캘린더 표시가없는 캘린더 만 기본 캘린더
- 3. ROR 3 : 이벤트 캘린더
- 4. 사용자 응용 프로그램에서 iPhone 캘린더 전화/생성 방법
- 5. 아이폰 캘린더 이벤트 생성/편집보기에 버튼을 추가 할 수 있습니까?
- 6. 알람, 캘린더, 알람 + 캘린더 또는 다른 것?
- 7. Google 캘린더 위에 캘린더 서비스 만들기
- 8. Google 캘린더 "다른 캘린더"XML 피드
- 9. 캘린더 컨트롤
- 10. lightswitch의 캘린더
- 11. DataGrid의 캘린더
- 12. Google 캘린더
- 13. jsp에서 캘린더
- 14. Google 캘린더 API DoS 방지
- 15. 구글 캘린더 API는 내가 Google 캘린더 API와 이상한 문제에 봉착
- 16. 기본 캘린더 모양이 비슷한 iPad 캘린더 라이브러리가 필요합니다.
- 17. Google 캘린더 API를 통해 캘린더 ID를 얻는 방법
- 18. 캘린더 일정을 Google 캘린더, ical, microsoft Outlook으로 내 보냅니다.
- 19. 일정 캘린더 채우기
- 20. iphone 캘린더 샘플
- 21. 인터페이스와 같은 Google 캘린더
- 22. Android 캘린더 작업
- 23. Sinatra와 캘린더 만들기
- 24. 구글 캘린더 자바 API를
- 25. Outlook에서 여러 캘린더 다루기
- 26. Android : 캘린더 UI 디자인
- 27. 캘린더 컨트롤을 만들기위한 아이디어
- 28. Qt의 캘린더 컨트롤
- 29. 자바 아랍어 (Hirji) 캘린더
- 30. 캘린더 이벤트 인스턴스 받기
왜 세트 기반 숫자 테이블 접근 방식을 사용하지 않으시겠습니까? –