【发布时间】:2016-07-20 04:59:44
【问题描述】:
我正在使用以下 WHERE 子句仅加载上一个会计年度加上一年至今的记录。
在没有WHERE clause 的情况下运行,100 万条记录需要 30 秒。使用 WHERE 子句,我不得不在 2 小时后停止它。
你能分享一下你的想法吗
WHERE
([schema].[table].[DATE] >= DATEADD
(yy, - 1, DATEADD
(MONTH,(MONTH(GETDATE()) - 1) / 6 * 12 - 6,
CAST(CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME)
)
)
)
【问题讨论】:
-
将计算放入变量中并将日期与该变量进行比较。即
declare @d datetime = DATEADD (yy, - 1, DATEADD (MONTH,(MONTH(GETDATE()) - 1) / 6 * 12 - 6, CAST(CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME) )...WHERE ([schema].[table].[DATE] >= @d -
尽管这并没有解决我的问题,但我还是做出了改变。谢谢
-
“迄今为止的一年”是什么意思?这是截至当前日期的最后一个财政年度吗?因此,如果您的财年从 10 月 1 日开始,那就是 2014 年 10 月 1 日 - 今天?
标签: sql sql-server tsql sql-server-2012 where-clause