2013-10-24 53 views
1

我已经有了一个结果集,但是我对其他查询有相同的结果感兴趣。他们之间有什么更好或更快?CROSS JOIN替代方案

insert into [dbo].[Teams] values(1,'First') 
insert into [dbo].[Teams] values(2,'Second') 
insert into [dbo].[Teams] values(3,'Third') 
insert into [dbo].[Teams] values(4,'Fourth') 
insert into [dbo].[Teams] values(5,'Fifth') 

CREATE TABLE [dbo].[Team_team] (
[id1] [int] NOT NULL, 
[id2] [int] NOT NULL 
) ON [PRIMARY] 
GO 

select * from teams; 

select t1.id,t2.id from teams t2 cross join teams t1 
+1

您可以选择任何其他连接类型'LEFT','INNER','RIGHT'并且使连接谓词ON1 = 1。虽然不会提高性能。 –

+0

您显示'Team_team'的模式,但您的SQL正在查询'团队'。 – mbeckish

+0

'CROSS JOIN'是表示有意笛卡尔产品的最佳方式......其他任何东西都会看起来像是一场意外。 –

回答

0

这是与其他语法相同:

select t1.id,t2.id from teams t1, teams t2 

不会有性能差异。

+1

这回答了这个问题,但是应该强烈建议不要这样的句法说明。 –