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. 可再针对具体的表结构进行比较测试,如聚集索引在三个联合主键字段上。
- SQL SERVER 插入大批量数据有无索引的效率对比
- SQL SERVER 2008 大批量数据的导入
- 大批量数据的插入
- sql server使用索引来禁止插入重复的数据
- SQL Server索引提高数据处理的效率
- 由SQL Server 2005大批量数据操作想起的
- 使用While插入大批量数据(PL/SQL)
- 大批量插入数据时优化SQL语句
- 提高数据库效率的一些方法--eg:大批量循环插入数据的简化
- SQL Server 对比两个数据库的索引
- Sql Server数据库使用触发器和sqlbulkcopy大批量数据插入更新
- 如何提高insert大批量数据的效率
- sql插入数据的方法以及效率
- 【SQL server】数据的插入
- mysql update 有无索引对比
- SQL Server 批量插入数据的三种方法分析对比
- SQL SERVER 合理的索引,会加快数据查询效率,但若索引过多或不当,则会适得其反
- java大批量插入数据
- 7月份的学习汇报
- 几个简单的排序算法(java版)
- 图的匹配问题与最大流问题(五)——计算二分图的最大匹配
- JS创建对象的几种方法
- Python中的*args和**kwargs
- SQL SERVER 插入大批量数据有无索引的效率对比
- Longest Valid Parentheses
- uva 10294 - Arif in Dhaka (First Love Part 2) Polya定理
- java之正则表达式
- 杭电4148-Length of S(n)
- LA 3983 - Robotruck 单调队列优化DP
- Java学习之道:SQL语句执行效率及分析(note)
- 系统函数学习笔记1
- 隐藏Tomcat版本信息