为什么在使用索引更新datetime列时速度会增加

时间:2014-04-09 13:06:11

标签: sql sql-server performance ado.net indexing

我有一个SQL Server 2014 CTP2数据库,其中包含一个名为datetime的{​​{1}}列,该列具有非唯一的非聚集索引。

索引创建语句是:

ExpirationDate

我的C#应用​​程序(自托管WCF服务)使用CREATE INDEX IX_ExpirationDate ON my_table (ExpirationDate); 进行选择&更新ADO.NET表的查询。

我创建了一个执行以下场景的测试应用程序:

  1. my_table数据库中的一项

    SELECT TOP(1)ID,ExpirationDate,... FROM my_table WITH(nolock) WHERE状态= 1 AND ... ORDER BY my_table.ExpirationDate ASC

  2. 更改测试应用程序中的项目

    item.Status = 2;
    item.ExpirationDate = DateTime.Now.AddHours(2);

  3. SELECT数据库中的项目

    更新my_table SET ExpirationDate = @ExpirationDate,Status = 2,... WHERE(my_table.ID = @ID);

  4. 我的申请中有两个案例:

    1. 在数据库更新之前更改测试应用程序中的UPDATE
    2. 在数据库更新之前,不要在测试应用程序中更改ExpirationDate
    3. 我在数据库中运行10000个项目的测试应用程序,结果显示第一个案例比第二个案例快4倍。

      有人可以解释为什么如果ExpirationDatedatetime更新后会有如此巨大的性能提升吗?

0 个答案:

没有答案