哪个更快的插入查询或更新在SQL?

时间:2013-09-05 05:43:22

标签: sql sql-server sql-server-2008

在我的应用程序中,我需要插入600行,每行有10个参数,这意味着我每5秒插入6000个数据。所以我删除前一个值并每5秒插入600行。另一种方式是我可以使用Clause更新以前的数据。所以想知道哪个性能问题最少。如果我有几百万行,如果我想选择ID 50000的数据。然后我会这样写

select * from mytable where ID=50000.

经过一段时间如果我需要id为90000的数据,那么sql server是否会从每个select语句的起始ID(ID = 1)进行搜索,否则它将直接转移到ID = 90000 我的查询是sql server从id = 1开始查找,直到匹配where子句或它是如何搜索的?

编辑 ID是Primay键和自动增量

3 个答案:

答案 0 :(得分:5)

我完全同意Aakash的回答,UPDATE很可能是这里更快的方法。


但是,我想澄清关于关系数据库如何运作的潜在误解(或缺乏理解):

  

如果我需要id为90000的数据,那么sql server将从每个select语句的起始ID(ID = 1)进行搜索,否则它将直接移至ID = 90000

假设ID是表中的主键(或者定义了唯一索引),那么SQL Server将直接查找ID = 90000的行(实际上几乎每个关系数据库都会这样做)

使用id=1查找行的时间与使用ID=90000ID=90000000

查找行的时间相同

我建议您花一些时间阅读SQL Server手册以了解关系数据库的工作原理。以下主题可能对您有意义:

此外,您可能希望查看“使用索引卢克”:http://use-the-index-luke.com/

有一个关于索引如何工作以及数据库如何使用它们的非常好的信息 lot

答案 1 :(得分:2)

插入会更快,因为在更新的情况下,您需要首先搜索您要更新的记录,然后执行更新。

这似乎不是一个有效的比较,因为你永远无法选择是否插入或更新,因为两者填补了两个完全不同的需求。 :)

答案 2 :(得分:1)

通常, UPDATE比DELETE + INSERT快得多,它只是一个命令。

表(列的数量和大小)越大,删除和插入而不是更新就越昂贵。这是因为你必须支付UNDO和REDO的价格。

另外,请记住,发出DELETE + INSERT时发生的实际碎片与正确实现的UPDATE相反会产生很大的差异。