这个跨表count的语句怎么写效率才高?

oldmht 2008-10-13 04:02:58
有两个表,数据都上10万条,原来的跨表count的语句是这样的:
select ID,(select Count(*) from A2 where A2.A1ID = A1.ID) as A2Count from A1
感觉速度挺慢的,怎么能优化呢?
...全文
78 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldmht 2008-10-13
  • 打赏
  • 举报
回复
速度提高确实主要是得益于索引的添加~~
jiang5311 2008-10-13
  • 打赏
  • 举报
回复
其实子查询和left join速度差不多,加上索引速度应该有明显提高。
中国风 2008-10-13
  • 打赏
  • 举报
回复
A1表的ID為唯一時可以直接連接
中国风 2008-10-13
  • 打赏
  • 举报
回复
select a.ID,Count(b.A1ID)--指定列
from A1 AS a
LEFT OUTER JOIN A2 AS b
on a.ID=b.A1ID
group by a.ID
oldmht 2008-10-13
  • 打赏
  • 举报
回复
我先测试一下看看
水族杰纶 2008-10-13
  • 打赏
  • 举报
回复
A2.A1ID A1.ID 建立索引
Garnett_KG 2008-10-13
  • 打赏
  • 举报
回复


SELECT ID,b.A2Count
FROM A1,
(
SELECT A1ID,COUNT(*) as A2Count
FROM A2
GROUP BY A1ID
)b
WHERE A1.ID=b.A1ID

--若表A1上的ID有索引会更快.


pt1314917 2008-10-13
  • 打赏
  • 举报
回复

--加索引
create index A1_id on A1(id)
create index A2_a1id on A2(A1id)

liangCK 2008-10-13
  • 打赏
  • 举报
回复
select ID,Count(*)
from A1 AS a
LEFT OUTER JOIN A2 AS b
on a.ID=b.A1ID
group by ID

34,575

社区成员

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

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