Как я могу создать даты для всего диапазона? Создать календарь
ответ
Как Митч Пшеница предлагает его комментарий, вероятно, лучший способ улучшить производительность этого запроса - использовать numbers table вместо рекурсивного CTE, используемого для генерации списка дат.
Если вы не можете или не использовать таблицу чисел, производительность диапазона дат КТР может быть улучшена для больших диапазонов с использованием метода, предложенного Ицик Бен-Ган:
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);
Хотя план выполнения показывает, что эта версия будет немного менее эффективной, чем оригинал (= ~ 1%), измерение с SET STATISTICS TIME
в моей системе показывает, что истекшее и процессорное время для этой версии меньше половины вашей версии.
@ priyanka.bangalore - метод относится к эффективному использованию CTE для генерации больших диапазонов чисел, а не конкретно к датам. Я думаю, что это в одной из книг «Inside SQL Server 2005» от Solid Quality Learning - я думаю, что программирование T-SQL один - http://www.amazon.co.uk/gp/product/0735621977 –
- 1. создать пользовательский календарь
- 2. Как создать такой календарь
- 3. Как создать тамильский календарь
- 4. Создать календарь с postgresql
- 5. Создать календарь в iOS
- 6. Как создать локальный календарь?
- 7. Создать настраиваемый календарь
- 8. Создать календарь с позвоночником
- 9. Как создать персонализированный календарь
- 10. Как создать календарь в OpenERP?
- 11. Как создать календарь подвижных пиров?
- 12. Как мне создать календарь календаря?
- 13. Как создать календарь в Php?
- 14. Как создать календарь в коде?
- 15. Как создать календарь с событиями
- 16. Как создать календарь для просмотра месяца как календарь Google?
- 17. Создать праздничный календарь праздников с Pandas
- 18. Возможно ли создать календарь с ретранслятором?
- 19. Как создать календарь в filemaker pro
- 20. Как создать Календарь с определенным часовым поясом?
- 21. Как создать простой календарь на android
- 22. Как создать вертикальный календарь в php
- 23. Как создать динамический календарь в MVC 3?
- 24. Ошибка Javascript при попытке создать календарь
- 25. Создать календарь с событиями Аппликатор Titanium
- 26. Кордова/PhoneGap календарь плагин IOS создать событие
- 27. Необходимо создать недельный календарь для измерения углов
- 28. Android - Создать пользовательский календарь с событием
- 29. Как создать календарь Ajax внутри gridview
- 30. Невозможно создать локальный календарь на iOS
Почему вы не хотите использовать подход таблицы чисел на основе набора? –