Tom*_*lak 6 sql sql-server indexing deterministic sql-server-2000
(这与在SQL服务器中建立日期相关.)
DATETIME是否存在确定性表达式?当我将其用作计算列公式时:
DATEADD(dd, DATEDIFF(dd, 0, [datetime_column]), 0)
Run Code Online (Sandbox Code Playgroud)
我在该列上放置索引时出错:
无法创建索引,因为键列'EffectiveDate'是非确定性的或不精确的.
但根据定义,DATEDIFF和DATEADD都是确定性函数.捕获量在哪里?可能吗?
我的猜测是这是某种错误。在 SQL 2005 中,我能够毫无问题地创建这样的索引视图(代码如下)。当我尝试在 SQL 2000 上运行它时,我得到了与您相同的错误。
以下内容似乎适用于 SQL 2000,但我收到一条警告,指出索引将被忽略,并且每次从视图中选择时都必须进行转换。
CONVERT(CHAR(8), datetime_column, 112)
Run Code Online (Sandbox Code Playgroud)
在 SQL 2005 中工作:
CREATE TABLE dbo.Test_Determinism (
datetime_column DATETIME NOT NULL DEFAULT GETDATE())
GO
CREATE VIEW dbo.Test_Determinism_View
WITH SCHEMABINDING
AS
SELECT
DATEADD(dd, DATEDIFF(dd, 0, [datetime_column]), 0) AS EffectiveDate
FROM
dbo.Test_Determinism
GO
CREATE UNIQUE CLUSTERED INDEX IDX_Test_Determinism_View ON dbo.Test_Determinism_View (EffectiveDate)
GO
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2817 次 |
最近记录: |