1
我有表新闻TSQL - 如何优化查询?
News
-------
NewsId
NewsText
CREATED_DATE
我需要得到的消息从一个指定的日期到一个未知之日起,但结果应该包含新闻5天。
例如:
- 如果涉及到这些日期的消息,我有:29日,28日,27日,第五,第四,第三 和起始日期指定日至29日,我需要在那里创建日期新闻29和4
之间,我不知道如何在这种情况下,低日期(4)无蛮力:
declare @highDate date = '2011-09-20';
declare @rows int = 0;
declare @lowDate date = @highDate;
declare @i int = 0;
--Querying while rows count != 5
WHILE (@rows != 5)
BEGIN
if (@i = 60)
break;
set @i = @i + 1;
set @lowDate = (select DATEADD(day, -1, @lowDate));
set @rows = (select COUNT(*) from
(SELECT DAY(CAST(CREATED_DATE AS date)) as c1
FROM .[dbo].[NEWS]
and CREATED_DATE > @lowDate
and CREATED_DATE < @highDate
group by DAY(CAST(CREATED_DATE AS date))) as rowsCount);
END
--then return news between to known dates
SELECT *
FROM [dbo].[NEWS]
and CREATED_DATE > @lowDate
and CREATED_DATE < @highDate
order by CREATED_DATE desc
我猜在该算法中,针对数据库的查询太多,我想摆脱60天限制