对大数据量执行的一些疑问
最近在SqlServer中做一个大数据量(3000万)的测试
表只有六个字段,字段的内容都比较小。
使用BULK INSERT语句插入数据,结果显示插入的速度比直接写INSERT语句会快很多。
这里分析两种情况:
一:表只有主键索引(非簇集)
在插入数据,查询数据都很慢。插入100万需42分钟左右
二:表有主键索引(非簇集)和一个簇集索引两个
插入数据相对第一种会快很多,100万数据大约12分钟。全部插入3000笔数据后,查询有簇集索引那列,第一次要消耗5秒左右,以后查询不到1秒。使用INSERT单笔插入后,速度也是很快的,不到1秒。
疑问1:第一种情况的插入速度慢,是否在建主键索引,而又没有簇集索引的情况下,B-Tree的建立会慢些。
疑问2:第一次做查询,SQLServer是否在做内部分析优化。
疑问3:执行where charindex('8', transid)=1这样的字符串匹配查询,速度会很慢,需70秒左右。内部是如何计算处理的,在哪耗的时间
表只有六个字段,字段的内容都比较小。
使用BULK INSERT语句插入数据,结果显示插入的速度比直接写INSERT语句会快很多。
这里分析两种情况:
一:表只有主键索引(非簇集)
在插入数据,查询数据都很慢。插入100万需42分钟左右
二:表有主键索引(非簇集)和一个簇集索引两个
插入数据相对第一种会快很多,100万数据大约12分钟。全部插入3000笔数据后,查询有簇集索引那列,第一次要消耗5秒左右,以后查询不到1秒。使用INSERT单笔插入后,速度也是很快的,不到1秒。
疑问1:第一种情况的插入速度慢,是否在建主键索引,而又没有簇集索引的情况下,B-Tree的建立会慢些。
疑问2:第一次做查询,SQLServer是否在做内部分析优化。
疑问3:执行where charindex('8', transid)=1这样的字符串匹配查询,速度会很慢,需70秒左右。内部是如何计算处理的,在哪耗的时间