往一个大数据量表插入数据时为什么很慢??索引的问题吗??

net_net 2008-05-13 08:34:37
每天结帐时往另一个数据库导数据,导数据时速度很慢,占用了整个存储过程执行的一半时间,但是单独把这几条语句单独拿出来执行时,速度很快,不到两秒钟。
a、b、c三个表,在开始执行时先往这三个表写了一部分数据,然后再导数据。
insert a(字段1,字段2)select 字段1,字段2 from a
insert b(字段1,字段2)select 字段1,字段2 from b
insert c(字段1,字段2)select 字段1,字段2 from c
--导数据
insert wz.dbo.a(字段1,字段2)select 字段1,字段2 from a where bh in(select bh from djb where bz<>'n')
insert wz.dbo.b(字段1,字段2)select 字段1,字段2 from b where bh in(select bh from djb where bz<>'n')
insert wz.dbo.c(字段1,字段2)select 字段1,字段2 from c where bh in(select bh from djb where bz<>'n')
bh用的聚集索引,两个数据库用的一样的索引。
...全文
402 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2008-05-13
  • 打赏
  • 举报
回复

有索引肯定对表插入速度有影响的
新鲜鱼排 2008-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 net_net 的回复:]
这几个表只有一个聚集索引
把这几条语句拿出来单独执行时速度很快,不到2秒钟,在存储过程事务中需要30~40秒
[/Quote]

可以在stored procedure中print出来每个语句执行时间。
还有,在什么地方运行stored procedure?是否需要考虑网络上时间消耗。
新鲜鱼排 2008-05-13
  • 打赏
  • 举报
回复
我觉得原因就是为了提高查询速度建立了过多的索引,这样降低了插入和更新的效率。
例如查询时使用了
select * from table where Upper(col) = 'A'
这样我们就不得不建立Upp(col)作为索引,这就是我们需要避免的。
net_net 2008-05-13
  • 打赏
  • 举报
回复
这几个表只有一个聚集索引
把这几条语句拿出来单独执行时速度很快,不到2秒钟,在存储过程事务中需要30~40秒
-晴天 2008-05-13
  • 打赏
  • 举报
回复
对djb表的 bz 列设置索引.如果不是必要,bh表不要设置索引,特别是不要设置聚集索引.
dawugui 2008-05-13
  • 打赏
  • 举报
回复
插入速度慢的原因如下:
1.硬件设施不足.
2.太多的索引.
3.太多的表连接.
4.插入大文本(如image,text...)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧