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#中的批量导入代码:
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实际花多少时间吧
select ckzh from Customer_deposit where khjlh="000890"
CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用SqlBulkCopy导入的数据无法组合查询!