使用SqlBulkCopy导入的数据无法组合查询

.Net技术 码拜 4年前 (2016-02-29) 308次浏览
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导入的数据无法组合查询
喜欢 (0)
[1034331897@qq.com]
分享 (0)