日期:2014-05-16  浏览次数:20410 次

关联关系的视图写法问题。
一个帐号表 [tb_Account] 字段Id,Name
一个组织表 [tb_Organization] 字段Id,Name
一个帐号和组织的关联关系表 [tb_Account_Organization] 字段Id,AccountId,OrganizationId

我用三种方法做了一个视图,三种方法返回的记录和结果都是一模一样的。

请问最正确的,效率最高的是哪一种方法?


--方法一
select c.Name,d.Name as OrgName,d.Code as OrgCode from 
(select account.*,relation.OrganizationId from dbo.tb_Account_Organization as relation 
right join dbo.tb_Account as account on relation.Accountid = account.Id) 
as c left join dbo.tb_Organization as d on c.OrganizationId=d.Id



--方法二
with temp as (
select A.Name,C.OrganizationId
from tb_Account as A,tb_Account_Organization as C
where A.Id=C.AccountId
)
select T.Name,ORG.Name as OrgName,ORG.Code as OrgCode from
temp as T,tb_Organization as ORG
where T.OrganizationId=ORG.Id



--方法三
select T.Name,ORG.Name as OrgName,ORG.Code as OrgCode from  
(
select A.Name,C.OrganizationId
from tb_Account as A,tb_Account_Organization as C
where A.Id=C.AccountId
) as T,tb_Organization as ORG
where T.OrganizationId=ORG.Id

------解决方案--------------------
把这3个语句,放到一起,运行一下,打开执行计划,看看,有一个开销%