临时表 插入到表中

OnlineLearner 2011-05-03 02:48:57
因为之前都是用程式分析,所以发现慢很多,就单单是100表数据都要花我很多时间。

但是我已经解决程式中的问题了,但是现在问题出现在这里的。

不好意思又来麻烦大家了。

问题:-

现在我有一个临时表(大约1000条数据) tmp 和一个需要插入的表 abc
tmp里面有 ItemID, NewUnitPrice , NewCurrencyID
abc里面也有 ItemID , NewUnitPrice , NewCurrencyID

如果abc里面没有tmp的itemid就 Insert
如果有还要分析 --> 如果tmp表中的NewUnitPrice , NewCurrencyID 和 abc表中的一样,就update
如果不一样,就不做任何事情。

谢谢大家的帮忙。

请问存储过程是哪个程序都一样的吗?(就是vb.net 或者 C#)都是会用到存储过程
...全文
151 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 interhker 的回复:]
引用 6 楼 guguda2008 的回复:



请问,如果一个临时表,如果同时有3个人使用,但是临时表在使用的初始过程会被清空
如果第一个人使用了5秒后,第2个人和第3个人使用,那么这个临时表会不会被清空?
谢谢。
[/Quote]

那这个事务有没有结束 结束了的话就会清空

楼主在这一点上可以去看看全局临时表和局部临时表
OnlineLearner 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 guguda2008 的回复:]

[/Quote]

请问,如果一个临时表,如果同时有3个人使用,但是临时表在使用的初始过程会被清空
如果第一个人使用了5秒后,第2个人和第3个人使用,那么这个临时表会不会被清空?
谢谢。
OnlineLearner 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 guguda2008 的回复:]

引用 4 楼 interhker 的回复:

请问这个算存储吗?
因为我之前都没想过这个问题,直到老板叫我写 excel导入,我才发现效率的问题。
我要去meeting了,大约几个小时回来。谢谢

这个不算存储,算参考语句。建议你先看看存储过程的定义。不然就算别人给你写出来了以后出了问题你也不会改。
[/Quote]

会的,就好象我写程式一样,看了google,测试了真的没办法,我才来询问。毕竟精力有限
谢谢你
OnlineLearner 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guguda2008 的回复:]

引用 3 楼 interhker 的回复:

引用 2 楼 guguda2008 的回复:

存储过程跟语言无关,不同语言的调用方法不同,但同样的参数传入后执行结果是相同的



那么就是为了提高insert的效率,都会使用存储过程吗?

同样的数据量,批量插入的效率大大高于单条循环插入。存储过程节省的是编译时间,不是插入时间。
[/Quote]

明白了,谢谢你
guguda2008 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 interhker 的回复:]

请问这个算存储吗?
因为我之前都没想过这个问题,直到老板叫我写 excel导入,我才发现效率的问题。
我要去meeting了,大约几个小时回来。谢谢
[/Quote]
这个不算存储,算参考语句。建议你先看看存储过程的定义。不然就算别人给你写出来了以后出了问题你也不会改。
guguda2008 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 interhker 的回复:]

引用 2 楼 guguda2008 的回复:

存储过程跟语言无关,不同语言的调用方法不同,但同样的参数传入后执行结果是相同的



那么就是为了提高insert的效率,都会使用存储过程吗?
[/Quote]
同样的数据量,批量插入的效率大大高于单条循环插入。存储过程节省的是编译时间,不是插入时间。
OnlineLearner 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 guguda2008 的回复:]

INSERT INTO ABC(ItemID , NewUnitPrice , NewCurrencyID,....)
SELECT ItemID , NewUnitPrice , NewCurrencyID ,....
FROM TMP T1 WHERE NOT EXISTS(
SELECT 1 FROM ABC T2 WHERE T2.ITEMID=T1.ITEMID
);
UPD……
[/Quote]

谢谢你的帮忙
请问这个算存储吗?
因为我之前都没想过这个问题,直到老板叫我写 excel导入,我才发现效率的问题。
我要去meeting了,大约几个小时回来。谢谢
OnlineLearner 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 guguda2008 的回复:]

存储过程跟语言无关,不同语言的调用方法不同,但同样的参数传入后执行结果是相同的
[/Quote]


那么就是为了提高insert的效率,都会使用存储过程吗?
guguda2008 2011-05-03
  • 打赏
  • 举报
回复
存储过程跟语言无关,不同语言的调用方法不同,但同样的参数传入后执行结果是相同的
guguda2008 2011-05-03
  • 打赏
  • 举报
回复
INSERT INTO ABC(ItemID , NewUnitPrice , NewCurrencyID,....)
SELECT ItemID , NewUnitPrice , NewCurrencyID ,....
FROM TMP T1 WHERE NOT EXISTS(
SELECT 1 FROM ABC T2 WHERE T2.ITEMID=T1.ITEMID
);
UPDATE T1 SET
T1.NewUnitPrice =T2.NewUnitPrice
,T1.NewCurrencyID =T2.NewCurrencyID
,T1.ITEMID=T2.ITEMID
,....
FROM ABC T1
INNER JOIN TMP T2 ON
T2.ITEMID=T1.ITEMID
AND T1.NewUnitPrice =T2.NewUnitPrice
AND T1.NewCurrencyID =T2.NewCurrencyID ;
--UPDATE的前三列可以去掉,因为是同值的。这样写是为了让你看明白格式。

34,588

社区成员

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

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