我有一个SQL Server 2014 CTP2数据库,其中包含一个名为datetime
的{{1}}列,该列具有非唯一的非聚集索引。
索引创建语句是:
ExpirationDate
我的C#应用程序(自托管WCF服务)使用CREATE INDEX IX_ExpirationDate ON my_table (ExpirationDate);
进行选择&更新ADO.NET
表的查询。
我创建了一个执行以下场景的测试应用程序:
my_table
数据库中的一项
SELECT TOP(1)ID,ExpirationDate,... FROM my_table WITH(nolock) WHERE状态= 1 AND ... ORDER BY my_table.ExpirationDate ASC
更改测试应用程序中的项目
item.Status = 2;
item.ExpirationDate = DateTime.Now.AddHours(2);
SELECT
数据库中的项目
更新my_table SET ExpirationDate = @ExpirationDate,Status = 2,... WHERE(my_table.ID = @ID);
我的申请中有两个案例:
UPDATE
ExpirationDate
我在数据库中运行10000个项目的测试应用程序,结果显示第一个案例比第二个案例快4倍。
有人可以解释为什么如果ExpirationDate
列datetime
更新后会有如此巨大的性能提升吗?