有没有更好的办法?

Haten 2008-05-06 05:04:22
CREATE TABLE #TB1
(
ID VARCHAR(10),
NAME VARCHAR(10),
TYPE VARCHAR(10)
)

CREATE TABLE #TB2
(
ID VARCHAR(10),
NAME VARCHAR(10),
TYPE VARCHAR(10),
RESULT INT
)

INSERT INTO #TB1
SELECT '0001','ZHANGSAN','1'
UNION
SELECT '0002','LISI','2'

INSERT INTO #TB2
SELECT '0001','ZHANGSAN','1',100
UNION
SELECT '0001','ZHANGSAN','1',200
UNION
SELECT '0001','ZHANGSAN','1',300

SELECT A.ID AS ID,A.NAME,A.TYPE,SUM(B.RESULT)
FROM #TB1 A LEFT JOIN #TB2 B ON A.ID=B.ID AND A.NAME=B.NAME AND A.TYPE=B.TYPE GROUP BY A.ID,A.NAME,A.TYPE

DROP TABLE #TB1
DROP TABLE #TB2

其中 #TB1,#TB2分别有几十万条记录,这个写法太慢了,一下就把服务器搞定了,呵呵 有没有更好的办法?

...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zarge 2008-05-06
  • 打赏
  • 举报
回复
在#TB1上建索引的意义不大
zarge 2008-05-06
  • 打赏
  • 举报
回复
在#TB2上的ID/Name/Type建索引
dawugui 2008-05-06
  • 打赏
  • 举报
回复
分别对两表ID+name+type建立复合索引.

或者改left join为inner join.

34,576

社区成员

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

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