SQL SERVER 插入大批量数据有无索引的效率对比

来源:互联网 发布:无线连接网络打印机 编辑:程序博客网 时间:2024/06/06 04:39

前段时间在公司做了个测试,测试在插入大批量数据时先建立索引的效率高还是后建立索引的效率高。

测试结果跟之前很多人一概而论的肯定是先插入数据的效率高的观点有点出入:当只有一个聚集

索引的时候,先建立聚集索引再插入数据的效率更高;有非聚集索引的时候先插入数据再建索引的

效率高。

               

/** 说明

1. 测试SQL SERVER 插入大批量数据的效率对比,

   对比(B方案)先插入100W条数据后再建主键和索引所耗时间

   与A方案)建立索引和主键后再插入100W条数据所耗时间,

   针对三种表:

      1)只有一个聚集索引

      2)有一个聚集索引和一个非聚集索引

      3)有一个聚集索引和两个非聚集索引

2. SQL SERVER VERSION:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) 

   Developer Edition on Windows NT 6.0 <X64> (Build 6002: Service Pack 2) (WOW64)

3. 测试表86个字段

*/

 

结果统计:

测试表类型

A方案)插入已有索引表耗时/

A方案)总耗时/

B方案)插入无索引表耗时/

B方案)建立索引耗时/

B方案)总耗时/

择优方案节约时间比

只有一个聚集索引

28

28

23

16

39

(B-A)/B=28%

有一个聚集索引和一个非聚集索引

46

46

23

17

40

(A-B)/A=13%

一个聚集索引和两个非聚集索引

86

86

23

31

54

(A-B)/A=37%

 

 

 

 

 

 

 

 

结果分析:

1.  此测试没有跨服务器,跨服务器的环境下效果对比可能更明显;

2.  有多个非聚集索引的情况下效果对比可能更明显;

3.  千万上亿计数据的情况效果对比可能更明显;

4.  服务器和数据库系统繁忙的情况下效果对比可能更明显;

5.  可再针对具体的表结构进行比较测试,如聚集索引在三个联合主键字段上。

原创粉丝点击