如何让多条SQL并行执行

yjdabc 2011-01-10 03:52:36
ALTER proc [dbo].[insert_3table]
as
declare @maxId int
select @maxId=max(id) from dbo.yuanShiData

-- 插入地区访问数据
insert into dbo.sheng_bingTu(sheng_id,[count],insert_time)
select sheng_id,count(1) as mycount,insert_time from dbo.vv_yuanshi_ip
where id<=@maxId group by sheng_id,insert_time

-- 插入栏目排名数据
insert into dbo.lanmu_Tu(lanmu1_id,[count],insert_time)
select lanmu_id,count(1) as mycount,insert_time from dbo.vv_yuanshi_lanmu
where id<=@maxId and lanmu_id >0 group by lanmu_id,insert_time

-- 插入新闻排名数据

insert into dbo.news_paiMing(news_url,dbw_id,[count],insert_time)
select url,dbw_id,count(1) as mycount,insert_time from dbo.vv_yuanshi_top10dbwId
where id<=@maxId group by dbw_id,insert_time,url

-- 删除原始表中的数据
delete dbo.yuanShiData where id<=@maxId

在这个存储过程中执行三个Insert语句,我想能不能让这三条语句并行运行,三条语句执行结束后执行最后的delete语句,
谢谢大家!!!
...全文
656 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2011-01-10
  • 打赏
  • 举报
回复
这并不并发有什么区别
-晴天 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yjdabc 的回复:]
不用回滚!
[/Quote]
既然不用回滚,那就按所列的顺序一条条执行好了,你管它咋做的干啥.一个新闻系统用不着这么精细的.
guguda2008 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qianjin036a 的回复:]

是不是可以前三条分别用三个事务来完成,最后,三个事务都结束了,再执行最后一个.
[/Quote]
只有在服务器没有满负荷的情况下,用三个连接分别跑语句才可能并行插入,还要确定它们操作的数据不冲突。同一个连接无论何时都只能执行一个事务。
yjdabc 2011-01-10
  • 打赏
  • 举报
回复
不用回滚!
华夏小卒 2011-01-10
  • 打赏
  • 举报
回复
是不是就是想,3条语句要么一起执行完成,要么一起回滚?
yjdabc 2011-01-10
  • 打赏
  • 举报
回复
每秒有大约300条记录插入到dbo.yuanShiData表中,执行这个存储过程,将符合条件的记录插入到另外三张表中,最后删除dbo.yuanShiData表。

我现在模拟每秒插入100条,速度很慢,所以想能不能采用并行的方式插入!
-晴天 2011-01-10
  • 打赏
  • 举报
回复
是不是可以前三条分别用三个事务来完成,最后,三个事务都结束了,再执行最后一个.
guguda2008 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yjdabc 的回复:]

我在sql_server中建了一个作业来执行这个存储过程,项目要求必须在sql_server内解决这个问题,不能在利用程序调用!
[/Quote]
作业本来就是顺序执行的,没法一块跑,除非你开三个作业,然后弄个临时表当作业间通信。那还不如写程序呢
yjdabc 2011-01-10
  • 打赏
  • 举报
回复
我在sql_server中建了一个作业来执行这个存储过程,项目要求必须在sql_server内解决这个问题,不能在利用程序调用!
叶子 2011-01-10
  • 打赏
  • 举报
回复
一个进程的话,必然有前后顺序。

现在这样顺序执行不是挺好吗?为什么要并行?
dawugui 2011-01-10
  • 打赏
  • 举报
回复
可以,因为是操作不同的表,不存在冲突.
guguda2008 2011-01-10
  • 打赏
  • 举报
回复
多开几个线程,每个线程跑一个连接就可以了

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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