2

In my app,I have a requirement to insert 600 rows and each row have 10 parameters that means I am inserting 6000 data for every 5 seconds.So I am deleting the previous value and inserting 600 rows for every 5 seconds.The other way is I can update the previous data using where Clause.So wondering to know which will have least performance issue.Also if I have some millions of rows and If i want to select the data for ID 50000.Then I will write this way

select * from mytable where ID=50000.

After some time If i need the data for id 90000 then Will the sql server search from beginning ID(ID=1) for every select statement or it will directly move to ID=90000 My query is will sql server starts looking from id=1 till it matches the where clause or how it searches?

EDIT ID is Primay key and auto increment

4

3 回答 3

6

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


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

如果我需要 id 90000 的数据,那么 sql server 会从每个 select 语句的开头 ID(ID=1) 开始搜索,否则它将直接移动到 ID=90000

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

查找带有的行与查找带有orid=1的行所花费的时间相同ID=90000ID=90000000

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

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

很多关于索引如何工作以及数据库如何使用它们的非常好的信息。

于 2013-09-05T06:19:48.153 回答
2

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

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

于 2013-09-05T05:49:31.107 回答
2

通常,UPDATE 比 DELETE+INSERT 快得多,因为它是单个命令。

表越大(列的数量和大小),删除和插入而不是更新的成本就越高。这是因为你必须为 UNDO 和 REDO 付出代价。

另外,请记住,当 DELETE+INSERT 与正确实施的 UPDATE 相反时发生的实际碎片会随着时间的推移而产生很大差异。

于 2013-09-05T05:49:35.160 回答