【发布时间】:2011-07-16 14:59:34
【问题描述】:
我有三张桌子:
- 富
- 酒吧
- FooBar
FooBar 是一个关系表,其中包含相互关联的Foos 和Bars 的集合,它只有两列(FooId,BarId)。
到目前为止,我的代码用于获取与所有 Bars 相关的所有 Foo:
select
f.*
from
Foo f
where
f.FooId IN
(
SELECT fb.FooId
FROM FooBar fb
GROUP BY fb.FooId
HAVING COUNT(*) = (SELECT COUNT(*) FROM Bar)
)
必须有更有效的方式来写这个。我可以将Bars 的总数放在外部选择之外的 SQL 变量中,这样它就不会每次都执行,但这是我迄今为止能想到的唯一优化。
【问题讨论】:
-
请问这个程序的目的是什么?看了标题,隐约想起了这个问题:stackoverflow.com/questions/3877178/…
-
也许值得改变学科领域?
-
其实你的查询给出了很好的执行计划,我不担心。
-
@IDWMaster - 我的实际问题可以简化为这个,我只是假设这个标题会给我带来更多的观点和答案,而不是发布和客户的标题:)