SQL server中通过某个相同字段关联两张表的问题

现有两张表T1,T2,字段均相同,如下:产品类别五级分类账号余额现要将T2,T2中账号相同的数据放入T3,并且把T1,T2中的五级分类、余额分别对应列放入T3中,即生成如... 现有两张表T1,T2,字段均相同,如下:
产品类别 五级分类 账号 余额
现要将T2,T2中账号相同的数据放入T3,并且把T1,T2中的五级分类、余额分别对应列放入T3中,即生成如下形式的表T3:
产品类别 账号 年初五级分类 年初余额 年末五级分类 年末余额

目前我能想到如下脚本:
**********************************
select T2.产品类别 as 产品类别,T2.账号 as 账号,T1.五级分类 as 年初五级分类, T2.余额 as 年末余额,T2.五级分类 as 年末五级分类 into T3temp
from T1,T2 where T1.账号 = T2.账号
select distinct * into T3 from T3temp
*******************************
问题:

因为T1 T2 每个表中都有50万条左右的数据,这样run了3、4个小时,就会报日志log文件已满的错误,此时日志文件已经3G多,整个数据库也大到300G+-,请高手帮忙看看是不是脚本逻辑太复杂造成运算量太大,有没有什么好的方法?多谢!
展开
 我来答
匿名用户
推荐于2017-08-25
展开全部
有一种方法, 你可以尝试一下。

首先, 创建一个视图

CREATE VIEW tempView AS
select
distinct
T2.产品类别 as 产品类别,
T2.账号 as 账号,
T1.五级分类 as 年初五级分类,
T2.余额 as 年末余额,
T2.五级分类 as 年末五级分类
from T1,T2
where T1.账号 = T2.账号

然后在 命令行方式下, 把这个视图的数据, 用 BCP out 导出。

bcp [数据库名].[dbo].[tempView] out test.txt -c -T -S "数据库服务的名字"

然后用 BCP in 导入

bcp [数据库名].[dbo].[T3] in test.txt -c -T -S "数据库服务的名字"

这样做, 实际上就是先查询数据, 把结果存储到 外部文件上面。
然后再从外部文件当中, 把数据导入到结果表。

-----

下面是我本机作的一个 模拟的创建视图, 与导出的例子。 没有做导入。

create VIEW v_test_main_sub AS
SELECT
test_main.id main_id,
test_main.value main_value,
test_sub.id sub_id,
test_sub.value sub_value
FROM
test_main
JOIN test_sub
ON (test_main.id = test_sub.main_id)

D:\>bcp [Test].[dbo].[v_test_main_sub] out test.txt -c -T -S "localhost\SQLEXPRESS"
开始复制...
已复制 2 行。
网络数据包大小(字节): 4096
总时钟时间(毫秒) : 47 平均值: (每秒 42.55 行。)
guchao123675
2013-01-21 · 超过23用户采纳过TA的回答
知道答主
回答量:108
采纳率:100%
帮助的人:72.9万
展开全部
在产品类别加索引,在年初五级分类和年末五级分类非聚集索引
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式