加快UPDATE操作

Mic*_*ssa 0 c# database sql-server sqlconnection executenonquery

请帮我加快桌面上的UPDATE操作.表具有唯一ID,用于查找记录和UPDATE其字段.表中有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),        
    );
Run Code Online (Sandbox Code Playgroud)

我正在使用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";
Run Code Online (Sandbox Code Playgroud)

Jos*_*osh 7

将您的id列设为主键.主键自动成为索引.如果您正在运行简单的更新语句,例如:

UPDATE customers SET <something> WHERE id = @id 
Run Code Online (Sandbox Code Playgroud)

那么这应该运行一个INDEX SEEK并且要快得多.如果没有该索引,您将使用TABLE SCAN进行更新,该SCAN比INDEX SEEK或甚至INDEX SCAN(如果您正在更新大量行时会发生)的数量级长.

另一个技巧是获取更新语句并在SQL Server中运行它并查看执行计划.这将告诉你瓶颈在哪里.此外,您可以转到查询选项| 高级| 并设置要在输出选项卡中显示的统计信息.