Ple*_*eun 5 sql sql-server-2008
我有两个大桌子
-主表A:140
万行-详细表B:900万行
B具有A的外键。
基本上,我需要表A +的所有25个明细字段,在这种情况下,要依靠B。
现在,我有以下伪查询:
Select
A.field1,
A.field2,
...
A.field25,
Count(b.id)
from
A left outer join B on B.fkAid = A.id
Group by
A.id,
A.field1,
A.field2,
...
A.field25
Order by A.field1
Run Code Online (Sandbox Code Playgroud)
查询计划显示分组需要花费大量时间(不足为奇)。
有没有更有效的方法来进行这种选择?
使用公用表表达式怎么样(您将其标记为 SQL Server 2008?)
WITH CountB AS
(
SELECT A.aId, value= Count(*)
FROM A left outer join B on B.fkAid = A.id
GROUP BY A.id
)
Select
A.field1,
A.field2,
...
A.field25,
CountB.value
from
A left outer join CountB on A.id = CountB.aId
Order by A.field1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8371 次 |
| 最近记录: |