sql - 在 sql 中插入查询或更新哪个更快?

标签 sql sql-server sql-server-2008

在我的应用程序中,我要求插入 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=90000ID=90000000 的行所花费的时间相同

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

此外,您可能想看看“Use The Index Luke”:http://use-the-index-luke.com/

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

关于sql - 在 sql 中插入查询或更新哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18628610/

相关文章:

mysql - 根据字段值更改mysql表连接

sql-server - SQL Server 2008中的“系统内存不足”错误

SQL 将路径列分解为分层数据

sql - 内连接转换失败

sql - 多选插入

sql - 带有LEFT JOIN的SQLite AVG()不返回所有行

sql - 消息 16929,游标为只读 - 为什么?

sql - 使用staging_table1和table2中的数据插入table1,同时使用staging_table1从table2获取数据

c# - 如何在按钮上显示菜单项单击工具条

.net - 如何连接到2个不同的sql服务器VB.NET