在我的应用程序中,我要求插入 600 行,每行有 10 个参数,这意味着我每 5 秒插入 6000 条数据。所以我删除以前的值并每 5 秒插入 600 行。另一种方法是我可以使用 where 子句更新以前的数据。所以想知道哪个性能问题最少。另外,如果我有几百万行并且如果我想选择 ID 50000 的数据。那么我会这样写
select * from mytable where ID=50000.
一段时间后,如果我需要 id 90000 的数据,那么 sql server 会从 ID(ID=1) 开始搜索每个 select 语句,还是直接移动到 ID=90000 我的查询是 sql server 会从 id=1 开始查找直到它匹配 where 子句或它如何搜索吗?
EDIT ID 为主键,自增
最佳答案
我完全同意 Aakash 的回答,即 UPDATE 很可能是这里更快的方法。
不过,我想澄清一个关于关系数据库如何工作的潜在误解(或缺乏理解):
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
假设 ID
是您表中的主键(或定义了唯一索引),那么 SQL Server 将直接查找 ID=90000 的行(实际上几乎每个关系数据库都会这样做那样)。
查找 id=1
的行与查找 ID=90000
或 ID=90000000
的行所花费的时间相同
我建议您花一些时间阅读 SQL Server 手册,以了解关系数据库的工作原理。您可能对以下主题感兴趣:
- http://msdn.microsoft.com/en-us/library/ms190659%28v=sql.100%29.aspx
- http://msdn.microsoft.com/en-us/library/ms190623%28v=sql.100%29.aspx
- http://msdn.microsoft.com/en-us/library/bb500155%28v=sql.100%29.aspx
此外,您可能想看看“Use The Index Luke”:http://use-the-index-luke.com/
有很多关于索引如何工作以及数据库如何使用它们的非常好的信息。
关于sql - 在 sql 中插入查询或更新哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18628610/