【发布时间】:2011-07-29 20:27:50
【问题描述】:
请帮我加快对表的 UPDATE 操作。 表具有唯一 id,用于查找记录并更新其字段。 表中有 1M 条记录。没有使用索引。只有唯一的 id。 插入需要一些时间.. 我预计毫秒。
表结构:
create table customers
(
id int IDENTITY(1,1) UNIQUE NOT NULL,
phonenum varchar(15) UNIQUE NOT NULL,
date datetime,
company varchar(150),
full_name varchar(150),
address varchar(150),
street varchar(100),
zip varchar(100),
city varchar(100),
info varchar(300),
op_data varchar(150),
op_date datetime,
op_user_taken varchar(100),
op_time_taken datetime,
op_status varchar(100),
user_taken varchar(100),
time_taken datetime,
status varchar(100),
);
我正在使用 SqlConnection System.Data.SqlClient.SqlConnection 和 ExecuteNonQuery 方法来更新记录。
我的表需要重新设计还是 ExecuteNonQuery 太慢了?
编辑:更新命令:
"UPDATE customers SET user_taken=@param1, time_taken=@param2,
date=@param3, company=@param4, full_name=@param55,
address=@param6, street=@param8, zip=@param9,
city=@param10, info=@param11 , status=\'Completed\',
op_data=@param12 WHERE id=@param7";
【问题讨论】:
-
我们可以看一个 UPDATE 语句示例吗?
-
向我们展示您的更新声明。如果您要更新所有 1M 行,那么是的,这需要一些时间。
-
如果您希望它在几毫秒内发生,那么添加一些索引?如果它必须对包含 100 万条记录的表进行全表扫描,那么不要指望它会很快。 :p
-
不,当然。首先它需要“免费”记录,锁定它。然后更新它,知道它的 ID。并非所有 1M 记录。每次操作只更新一条记录。
-
如果表上没有索引,它仍然需要扫描整个表以查找需要更新的记录。添加索引。
标签: c# sql-server database sqlconnection executenonquery