SqlBulkCopy批量插入和索引的关系

    .net中批量插入基本都用SqlBulkCopy,速度很快,但是这几天发现个问题,2000数据居然15s,百思不得其解。经过大量测试,发现过多的索引和索引碎片会严重影响插入速度,表的数据量大小反而不会影响插入速度。

如图:索引(历史遗留原因,我也不知道为啥建这么多索引)

SqlBulkCopy:
             sw.Start();
            using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(str))
            {
                sqlBulkCopy.BatchSize = batchSize;
                sqlBulkCopy.DestinationTableName = tableName;
                sqlBulkCopy.WriteToServer(dt);
            }
            sw.Stop();

 插曲:最开始批量操作用的是Z.EntityFramework.Extensions,插入速度很快(当时没有删除索引),上线后次月发现这个dll过期,收费的。

posted @ 2018-10-11 14:17  沧海巫山  阅读(485)  评论(0编辑  收藏  举报