SQL Server 2012的性能奇特

SQL Server 2012的性能奇特

问题描述:

是不是像一个查询的规范:SQL Server 2012的性能奇特

update A set TextField = 'U' 

采取2分钟就用2M记录的表执行?该表没有PK,没有索引,但我也没有使用where

+0

我几乎从来没有处理过这样大小的数据 - 希望它的工作速度更快一些,特别是对于简单的查询,尽管感谢了。 – user1514042

+0

更新和插入通常比查询慢,因为读取通常比写入更快。 – Blorgbeard

+0

@fvu请将其更改为答案,我会接受它。 – user1514042

2M记录在2分钟内更新,大约每秒16k更新,这是IMO相当不错。

大多数DBMS在将写入操作提交到缓存时不会立即返回,而是等待操作系统确认写入操作实际上已执行。该功能对于确保数据完整性非常重要,您认为我是数据库服务器的关键质量。相反,select语句通常可以从缓存中提供。

顺便说一句,你可能会发现Bruce Momjian的this presentation很有意思,它很好地解释了当你选择一个数据库服务器时需要考虑什么。它以PostgreSQL为中心,但他解释的是对所有数据库服务器都有效。

编辑:另一个有趣的信息来源是this presentation by Microsoft's Bob Dorr - 其中有趣的事情表明98%的SQLServer中的IO是异步的。

如果您发现更新已包含值的列与已设置为null的列,this SO article可能包含有用的信息 - 您用于TextField列的数据类型可能具有显着影响。

+0

我实际上发现了一些非常有趣的东西 - 如果我将TextField make的默认值设置为不可修饰,然后运行相同的查询 - 它需要20%的初始时间。看起来在更新期间需要花费大量时间获取更多空间。 – user1514042