SQL语句为:select * from Customer_Deposit_data where sjrq=”2016-05-18″ and
ckzh in(select ckzh from Customer_deposit where khjlh=”000890″)
其中5月18日的数据为本人使用SqlBulkCopy方式从Excel中批量导入的,之前数据为数据库直接导入。现在出现的情况是5月18日的数据本人使用select * from Customer_Deposit_data where sjrq=”2016-05-18″或select * from Customer_Deposit_data where
ckzh in(select ckzh from Customer_deposit where khjlh=”000890″)都能迅速得到结果,但是使用组合以后就提示超时,无法获取结果。
注:ckzh的数据量目前也就100多点。
以下为本人C#中的批量导入代码:
ckzh in(select ckzh from Customer_deposit where khjlh=”000890″)
其中5月18日的数据为本人使用SqlBulkCopy方式从Excel中批量导入的,之前数据为数据库直接导入。现在出现的情况是5月18日的数据本人使用select * from Customer_Deposit_data where sjrq=”2016-05-18″或select * from Customer_Deposit_data where
ckzh in(select ckzh from Customer_deposit where khjlh=”000890″)都能迅速得到结果,但是使用组合以后就提示超时,无法获取结果。
注:ckzh的数据量目前也就100多点。
以下为本人C#中的批量导入代码:
using (SqlConnection conn = new SqlConnection(DbUtils.cs)) { conn.Open(); SqlTransaction Transaction = conn.BeginTransaction();//开启事务 using (SqlBulkCopy BulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, Transaction)) { try { BulkCopy.BulkCopyTimeout = 360; BulkCopy.DestinationTableName = TableConvention.Resolve(new Customer_Deposit_Data());//目标表 BulkCopy.WriteToServer(ds.Tables[i]); BulkCopy.ColumnMappings.Clear(); Transaction.Commit();//事务提交 } catch { Transaction.Rollback();//事务回滚 } finally { BulkCopy.Close(); Transaction.Dispose();//事务释放 conn.Close(); } } }
解决方案
80
这个插入没什么关系,sql改下试试
select a.* from Customer_Deposit_data a inner join Customer_deposit b on a.ckzh = b.ckzh where a.sjrq="2016-05-18" and b.khjlh="000890"
假如超时,就打开执行计划检查所需索引有没加全
20
这么大的标题,结果内容跟SqlBulkCopy没一毛钱关系
你查下下面这段SQL实际花多少时间吧
你查下下面这段SQL实际花多少时间吧
select ckzh from Customer_deposit where khjlh="000890"