【发布时间】:2015-11-26 13:36:35
【问题描述】:
我对 SQL Server 查询比较陌生。
我正在尝试编写一个查询,其中显示了我公司的分支机构。我有 3 种方法:
-
写一个子查询:
Select (Select branchname from branchtable where branchPK = primarycompanybranchfk ) as branchone, (Select branchname from branchtable where branchPK = secondarycompanybranchfk ) as branchtwo from companytable -
使用连接:
Select a.branchname as branchone, b.branchname as branchtwo from companytable c left join branchtable a on a.branchPK = c.primarycompanybranchfk left join branchtable b on b.branchPK = c.secondarycompanybranchfk -
使用子表的连接:
Select branchfirst.branchname as branchone, branchsecond.branchname as branchtwo from companytable c left join ( Select branchPK as prikey, branchname as branchname from branchtable ) branchfirst on branchfirst.prikey= c.primarycompanybranchfk left join ( Select branchPK as prikey, branchname as branchname from branchtable ) branchsecond on branchsecond.prikey= c.secondarycompanybranchfk
如果我使用第 3 种场景而不是第 2 种场景,或者如果我的分支表包含超过 10 列,反之亦然,是否有任何性能改进?
【问题讨论】:
-
SQL Server 以及其他几个 Microsoft 产品往往有两个与每个版本相关联的不同数字 - 一个是“营销”版本号,近年来一直是年份编号,另一个是另一个是内部版本号(显示在很多地方)。您不应该缩短年份版本号,因为这两个数字不对齐(经常)。例如。 SQL Server 版本 8 被称为“SQL Server 2000”,而“SQL Server 2008”的版本号为 10。
-
而且 - 顺便说一句 - 还有一个信息:@Damien_The_Unbeliever 如果不使用
@符号和他的用户名,将不会收到通知。所以他可能连你的谢意都得不到…… -
@Damien_The_Unbeliever:感谢您提供有关版本号的信息。
-
@Shnugo:注意到先生!谢谢
-
您好 Gerald,我刚刚查看了您的个人资料。您提出了 18 个问题,但接受的答案不超过 8 个。请在这里看一下:someone-answers。关键是,未被接受的问题永远保持开放。谢谢
标签: sql-server performance sql-server-2008